diff --git a/org.eclipse.jdt.debug.tests/java16_/a/b/c/RecordTests.java b/org.eclipse.jdt.debug.tests/java16_/a/b/c/RecordTests.java
index c9a1186..2253759 100644
--- a/org.eclipse.jdt.debug.tests/java16_/a/b/c/RecordTests.java
+++ b/org.eclipse.jdt.debug.tests/java16_/a/b/c/RecordTests.java
@@ -12,7 +12,11 @@
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package a.b.c;
-record R(int i, String s) {}
+record R(int i, String s) {
+	R( int i){
+		this(i, "hello");
+	}
+}
 
 public class RecordTests {
 
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/RecordBreakpointTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/RecordBreakpointTests.java
index 4e651bd..c94095d 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/RecordBreakpointTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/breakpoints/RecordBreakpointTests.java
@@ -15,6 +15,7 @@
 
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.debug.core.IJavaClassPrepareBreakpoint;
+import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
 import org.eclipse.jdt.debug.tests.AbstractDebugTest;
 
 public class RecordBreakpointTests extends AbstractDebugTest {
@@ -30,6 +31,7 @@
 	protected IJavaProject getProjectContext() {
 		return get16_Project();
 	}
+
 	public void testRecordClassBreakpoint() throws Exception {
 
 		try {
@@ -43,4 +45,17 @@
 		}
 	}
 
+	public void testRecordLineBreakpoint() throws Exception {
+
+		try {
+			// create a classLoad breakpoint to test
+			IJavaLineBreakpoint lineBreakpoint = createLineBreakpoint(17, "a.b.c.RecordTests");
+			assertEquals("wrong type name", "a.b.c.RecordTests", lineBreakpoint.getTypeName());
+		} catch (Exception e) {
+			throw e;
+		} finally {
+			removeAllBreakpoints();
+		}
+	}
+
 }
diff --git a/org.eclipse.jdt.debug.ui/.settings/.api_filters b/org.eclipse.jdt.debug.ui/.settings/.api_filters
index 0d462e6..2a6baac 100644
--- a/org.eclipse.jdt.debug.ui/.settings/.api_filters
+++ b/org.eclipse.jdt.debug.ui/.settings/.api_filters
@@ -8,15 +8,6 @@
             </message_arguments>
         </filter>
     </resource>
-    <resource path="ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java" type="org.eclipse.jdt.internal.debug.ui.actions.ToggleBreakpointAdapter">
-        <filter comment="For Java 15" id="640712815">
-            <message_arguments>
-                <message_argument value="IType"/>
-                <message_argument value="ToggleBreakpointAdapter"/>
-                <message_argument value="isRecord()"/>
-            </message_arguments>
-        </filter>
-    </resource>
     <resource path="ui/org/eclipse/jdt/internal/debug/ui/classpath/ClasspathEntry.java" type="org.eclipse.jdt.internal.debug.ui.classpath.ClasspathEntry">
         <filter comment="Known illegal implementation" id="574619656">
             <message_arguments>
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
index afed9b4..8b131a6 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java
@@ -1283,8 +1283,14 @@
 			if (e instanceof IMember) {
 				m = (IMember) e;
 			}
+			// Class breakpoint should be created if the offset was at the record component in the record definition
 			if (m != null && m.getParent() instanceof IType && ((IType) m.getParent()).isRecord()) {
-				m = (IMember) m.getParent();
+				if (m instanceof IField) {
+					IField field = (IField)m;
+					if (field.isRecordComponent()) {
+						m = (IMember) field.getParent();
+					}
+				}
 			}
 		}
 		if (m != null) {
