0%

softbreakpoint-and-hardbreakpoint

  • 硬件断点:硬断点需要硬件寄存器提供支持,断点的数目受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

  1. 硬断点和软断点的区别
  2. JLink + Vmware调试linux内核
  3. 内核调试方法:Jprobe与硬件断点
  4. 程序中如何给自己设置硬件断点(通过程序代码设置数据断点而不使用JTAG)
  5. Debugging segfaults from logs to gdb
  6. 使用gdb调试linux内核
  7. gdb工作原理和内核实现
  8. 用GDB调试程序
  9. Debugging with GDB