Debugging 在使用gdb进行jtag调试期间,内核在遇到断点后陷入恐慌

Debugging 在使用gdb进行jtag调试期间,内核在遇到断点后陷入恐慌,debugging,linux-kernel,gdb,jtag,Debugging,Linux Kernel,Gdb,Jtag,我试图在我的主机上使用jtag和gdb调试在sabre lite板上运行的linux内核。在调试期间,我在“do_fork()”处插入一个断点,并允许内核继续执行。 只要我在sabre lite板上输入“ls”命令,断点就会被击中,之后内核就会恐慌 以下是在sabre lite板控制台终端上生成的日志: root@mx6q:~# ls [ 94.725966] Unhandled prefetch abort: breakpoint debug exception (0x002) at 0x

我试图在我的主机上使用jtag和gdb调试在sabre lite板上运行的linux内核。在调试期间,我在“do_fork()”处插入一个断点,并允许内核继续执行。 只要我在sabre lite板上输入“ls”命令,断点就会被击中,之后内核就会恐慌

以下是在sabre lite板控制台终端上生成的日志:

root@mx6q:~# ls
[   94.725966] Unhandled prefetch abort: breakpoint debug exception (0x002) at 0x00094d74
[   94.733935] Internal error: : 2 [#1] PREEMPT SMP ARM
[   94.738918] Modules linked in: ov5642_camera ov5640_camera_mipi mxc_v4l2_capture ipu_g
[   94.754748] CPU: 1 PID: 406 Comm: sh Not tainted 3.10.45 #1
[   94.760343] task: dcb78f00 ti: dc8ec000 task.ti: dc8ec000
[   94.765781] PC is at do_fork+0x0/0x368
[   94.769554] LR is at SyS_clone+0x24/0x2c
[   94.773497] pc : [<c002ae3c>]    lr : [<c002b264>]    psr: 800f0013
[   94.773497] sp : dc8edf90  ip : b6f3d068  fp : dc8edfa4
[   94.784993] r10: 00000000  r9 : dc8ec000  r8 : c000e304
[   94.790235] r7 : 00000078  r6 : b6ec0000  r5 : 00000000  r4 : b6f3d068
[   94.796778] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 01200011
[   94.803325] Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   94.810477] Control: 10c5387d  Table: 2c89004a  DAC: 00000015
[   94.816240] Process sh (pid: 406, stack limit = 0xdc8ec238)
[   94.821830] Stack: (0xdc8edf90 to 0xdc8ee000)
[   94.826208] df80:                                     b6f3d068 c011aa24 00000000   dc8e8
[   94.834410] dfa0: c000e180 c002b24c b6f3d068 00000000 01200011 00000000 00000000 00000
[   94.842612] dfc0: b6f3d068 00000000 b6ec0000 00000078 b6f3d4c0 00000196 000e5e08 bed5c
[   94.850813] dfe0: 00000000 bed52940 b6f3d000 b6e25640 600f0010 01200011 fd3b4088 0000f
[   94.859001] Backtrace: 
[   94.861512] [<c002b240>] (SyS_clone+0x0/0x2c) from [<c000e180>] (ret_fast_syscall+0x0)
[   94.869887] Code: e92dd800 e24cb004 e5801188 e89da800 (e1200070) 
[   94.876596] ---[ end trace 3e3aa32a078125f3 ]---
     Stopping Serial Getty on ttymxc1...
[  OK  ] Stopped Serial Getty on ttymxc1.
     Starting Serial Getty on ttymxc1...
[   94.957982] Unhandled prefetch abort: breakpoint debug exception (0x002) at 0xb6e5e4a0
[   94.966066] Internal error: : 2 [#2] PREEMPT SMP ARM
[   94.971058] Modules linked in: ov5642_camera ov5640_camera_mipi mxc_v4l2_capture ipu_g
[   94.986894] CPU: 3 PID: 1 Comm: systemd Tainted: G      D      3.10.45 #1
[   94.993705] task: dc078000 ti: dc05c000 task.ti: dc05c000
[   94.999143] PC is at do_fork+0x0/0x368
[   95.002916] LR is at SyS_clone+0x24/0x2c
[   95.006859] pc : [<c002ae3c>]    lr : [<c002b264>]    psr: 80070013
[   95.006859] sp : dc05df90  ip : b6d2c068  fp : dc05dfa4
[   95.018355] r10: 00000000  r9 : dc05c000  r8 : c000e304
[   95.023596] r7 : 00000078  r6 : b6eed000  r5 : bef7cfc8  r4 : b6d2c068
[   95.030138] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 01200011
[   95.036685] Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   95.043837] Control: 10c5387d  Table: 2c57c04a  DAC: 00000015
[   95.049599] Process systemd (pid: 1, stack limit = 0xdc05c238)
[   95.055448] Stack: (0xdc05df90 to 0xdc05e000)
[   95.059827] df80:                                     b6d2c068 000b9ec1 00000000 dc058
[   95.068028] dfa0: c000e180 c002b24c b6d2c068 bef7cfc8 01200011 00000000 00000000 00000 
[   95.076228] dfc0: b6d2c068 bef7cfc8 b6eed000 00000078 b6d2c4c0 00000001 00000000 bef74
[   95.084429] dfe0: 00000001 bef7cfc8 b6d2c000 b6e52640 60070010 01200011 fd7b4088 0000f
[   95.092616] Backtrace: 
[   95.095125] [<c002b240>] (SyS_clone+0x0/0x2c) from [<c000e180>] (ret_fast_syscall+0x0)
[   95.103502] Code: e92dd800 e24cb004 e5801188 e89da800 (e1200070) 
[   95.109750] ---[ end trace 3e3aa32a078125f4 ]---
[   95.116889] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[   95.116889] 
[   95.126041] CPU0: stopping
[   95.128760] CPU: 0 PID: 163 Comm: systemd-journal Tainted: G      D      3.10.45 #1
[   95.136418] Backtrace: 
[   95.138902] [<c0011f24>] (dump_backtrace+0x0/0x10c) from [<c0012138>] (show_stack+0x1)
[   95.147342]  r6:c0a70e40 r5:00000000 r4:00000005 r3:00000000
[   95.153072] [<c0012120>] (show_stack+0x0/0x1c) from [<c078d698>] (dump_stack+0x20/0x2)
[   95.161083] [<c078d678>] (dump_stack+0x0/0x28) from [<c00145d4>] (handle_IPI+0x124/0x)
[   95.169268] [<c00144b0>] (handle_IPI+0x0/0x14c) from [<c0008628>] (gic_handle_irq+0x5)
[   95.177718] [<c00085cc>] (gic_handle_irq+0x0/0x64) from [<c0793140>] (__irq_svc+0x40/)
[   95.185985] Exception stack(0xdc6e5df0 to 0xdc6e5e38)
[   95.191041] 5de0:                                     c0acb800 600f0013 00003d1d 00000
[   95.199224] 5e00: c0c7fb00 00000001 dc64b000 00000001 00000000 dc00e400 c0acb4c0 dc6e4
[   95.207405] 5e20: dc6e5e48 dc6e5e38 c00d8cd8 c0792858 a00f0013 ffffffff
[   95.214021]  r7:dc6e5e24 r6:ffffffff r5:a00f0013 r4:c0792858
[   95.219749] [<c079282c>] (_raw_spin_unlock_irqrestore+0x0/0x54) from [<c00d8cd8>] (re)
[   95.229676] [<c00d8b1c>] (release_pages+0x0/0x200) from [<c01006f8>] (free_pages_and_)
[   95.239345] [<c0100684>] (free_pages_and_swap_cache+0x0/0xac) from [<c00f38b8>] 
root@mx6q:~#ls
[94.725966]未经处理的预回迁中止:0x00094d74处的断点调试异常(0x002)
[94.733935]内部错误::2[#1]抢占SMP ARM
[94.738918]链接到的模块:ov5642\u摄像头ov5640\u摄像头mipi mxc\u v4l2\u捕获ipu\g
[94.754748]CPU:1 PID:406通信:sh未受污染3.10.45#1
[94.760343]任务:dcb78f00 ti:dc8ec000任务。ti:dc8ec000
[94.765781]PC位于Dou fork+0x0/0x368
[94.769554]LR位于系统克隆+0x24/0x2c
[94.773497]pc:[]lr:[]psr:800f0013
[94.773497]sp:dc8edf90 ip:b6f3d068 fp:dc8edfa4
[94.784993]r10:00000000 r9:dc8ec000 r8:c000e304
[94.790235]r7:00000078 r6:b6ec0000 r5:00000000 r4:b6f3d068
[94.796778]r3:00000000 r2:00000000 r1:00000000 r0:01200011
[94.803325]标志:SVC_32 ISA ARM段用户模式下FIQ上的Nzcv IRQ
[94.810477]控制:10c5387d表:2c89004a DAC:00000015
[94.816240]过程sh(pid:406,堆栈限制=0xdc8ec238)
[94.821830]堆栈:(0xdc8edf90到0xdc8ee000)
[94.826208]df80:b6f3d068 c011aa24 00000000 dc8e8
[94.834410]dfa0:c000e180 c002b24c b6f3d068 00000000 01200011 00000000
[94.842612]dfc0:b6f3d068 00000000 b6ec0000 00000078 b6f3d4c0 00000 196 000e5e08 bed5c
[94.850813]dfe0:00000000 bed52940 b6f3d000 b6e25640 600f0010 01200011 fd3b4088 0000f
[94.859001]回溯:
[94.861512][](系统克隆+0x0/0x2c)来自[](快速系统调用+0x0)
[94.869887]代码:e92dd800 e24cb004 e5801188 e89da800(e1200070)
[94.876596]--[end trace 3e3aa32a078125f3]---
正在停止ttymxc1上的串行Getty。。。
[确定]已停止ttymxc1上的串行Getty。
正在ttymxc1上启动串行Getty。。。
[94.957982]未经处理的预回迁中止:0xB6E5A0处的断点调试异常(0x002)
[94.966066]内部错误::2[#2]抢占SMP ARM
[94.971058]链接到的模块:ov5642\u摄像头ov5640\u摄像头mipi mxc\u v4l2\u捕获ipu\g
[94.986894]CPU:3 PID:1通信:系统受污染:G D 3.10.45#1
[94.993705]任务:dc078000 ti:dc05c000任务。ti:dc05c000
[94.999143]PC位于Dou fork+0x0/0x368
[95.002916]LR位于系统克隆+0x24/0x2c
[95.006859]pc:[]lr:[]psr:80070013
[95.006859]sp:dc05df90 ip:b6d2c068 fp:dc05dfa4
[95.018355]r10:00000000 r9:dc05c000 r8:c000e304
[95.023596]r7:00000078 r6:b6eed000 r5:bef7cfc8 r4:b6d2c068
[95.030138]r3:00000000 r2:00000000 r1:00000000 r0:01200011
[95.036685]标志:SVC_32 ISA ARM段用户模式下FIQ上的Nzcv IRQ
[95.043837]控制:10c5387d表:2c57c04a DAC:00000015
[95.049599]过程系统D(pid:1,堆栈限制=0xdc05c238)
[95.055448]堆栈:(0xdc05df90到0xdc05e000)
[95.059827]df80:b6d2c068 000b9ec1 00000000 dc058
[95.068028]dfa0:c000e180 c002b24c b6d2c068 bef7cfc8 01200011 00000000 00000000
[95.076228]dfc0:b6d2c068 bef7cfc8 b6eed000 000000 78 B6D2C4C00000000 100000000 bef74
[95.084429]dfe0:0000000 1 bef7cfc8 b6d2c000 b6e52640 60070010 01200011 fd7b4088 0000f
[95.092616]回溯:
[95.095125][](系统克隆+0x0/0x2c)来自[](快速系统调用+0x0)
[95.103502]代码:e92dd800 e24cb004 e5801188 e89da800(e1200070)
[95.109750]--[end trace 3e3aa32a078125f4]---
[95.116889]内核死机-不同步:试图杀死init!exitcode=0x0000000b
[   95.116889] 
[95.126041]CPU0:停止
[95.128760]CPU:0 PID:163通信:系统日志受污染:G D 3.10.45#1
[95.136418]回溯:
[95.138902][](转储回溯+0x0/0x10c)来自[](显示堆栈+0x1)
[95.147342]r6:c0a70e40 r5:00000000 r4:00000005 r3:00000000
[95.153072][](显示堆栈+0x0/0x1c)来自[](转储堆栈+0x20/0x2)
[95.161083][](转储堆栈+0x0/0x28)来自[](句柄+0x124/0x)
[95.169268][](句柄IPI+0x0/0x14c)来自[](gic_句柄irq+0x5)
[95.177718][](gic_handle_irq+0x0/0x64)来自[](gic_irq_svc+0x40/)
[95.185985]异常堆栈(0xdc6e5df0到0xdc6e5e38)
[95.191041]5de0:c0acb800 600f0013 00003d1d 00000
[95.199224]5e00:C0C7FB00000001 DC64B000000001 dc00e400 c0acb4c0 dc6e4
[95.207405]5e20:dc6e5e48 dc6e5e38 c00d8cd8 c0792858 a00f0013 FFFFFF
[95.214021]r7:dc6e5e24 r6:ffffffff r5:a00f0013 r4:c0792858
[95.219749][](原始旋转解锁irqrestore+0x0/0x54)从[](re)
[95.229676][](释放页面+0x0/0x200)来自[](免费页面和)
[95.239345][](免费页面和交换缓存+0x0/0xac)来自[]
在我的东道主方面:

Breakpoint 4, do_fork (clone_flags=18874385, stack_start=0, 
Sending packet: $mdc8edfa8,4#94...Packet received: 68d0f3b6
stack_size=stack_size@entry=0, parent_tidptr=0x0 <__vectors_start>, 
child_tidptr=child_tidptr@entry=0xb6f3d068) at kernel/fork.c:1570
1570    kernel/fork.c: No such file or directory.
断点4,do_fork(克隆标志=18874385,堆栈开始=0,
发送数据包:$mdc8edfa8,4#94…收到的数据包:68d0f3b6
堆栈大小=堆栈_size@entry=0,父项\u tidptr=0x0,
child_tidptr=child_tidptr@entry=0xb6f3d068)在内核/fork处。c:1570
1570 kernel/fork.c:没有这样的文件或目录。

内核恐慌是指内核模块出现异常错误。有时,显示的错误消息可能是错误的结果,而不是原因

有人能告诉我我在这个问题上遇到了麻烦…………你可以尝试使用kgdb。这可能是因为你正在调试抢占SMP配置吗?