- 硬件断点:硬断点需要硬件寄存器提供支持,断点的数目受Embedded ICE中的Watchpoint数目的限制,但是可以在任何地方设置断点
- 软件断点:软件断点通过在运行起来的程序中设置特征值实现,其数目不受限制,但是一般情况下软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM(比如:Flash)中设置
info symbol ptr
Feb 22 13:28:27 serverXX kernel: [1953364.275653] gm[16356]: segfault at 0 ip 00007fd137bd41e0 sp 00007fff5770dcd0 error 6 in libGraphicsMagick.so.3.7.0[7fd1379b9000+29d000]
(gdb) info symbol 0x21B1E0
WriteOnePNGImage + 13648 in section .text
root@XXX:~# nm vmlinux | grep xx
0000000000104650 T AccessCacheViewPixels
0000000000104700 T AccessDefaultCacheView
00000000000ea030 T AccessDefinition
00000000001061e0 T AccessImmutableIndexes
0000000000106170 T AccessMutableIndexes
[...]
0000000000210d50 T RegisterJP2Image
0000000000213170 T RegisterPNGImage
0000000000210cf0 T UnregisterJP2Image
0000000000213110 T UnregisterPNGImage
Ref
- 硬断点和软断点的区别
- JLink + Vmware调试linux内核
- 内核调试方法:Jprobe与硬件断点
- 程序中如何给自己设置硬件断点(通过程序代码设置数据断点而不使用JTAG)
- Debugging segfaults from logs to gdb
- 使用gdb调试linux内核
- gdb工作原理和内核实现
- 用GDB调试程序
- Debugging with GDB