使用gdb在远程Linux内核调试中未遇到断点

Breakpoints not being hit in remote linux kernel debugging using gdb

我正在尝试使用jtag probe和gdb远程调试在arm cortex-a9目标上运行的linux内核。
我可以连接到内核并使用gdb停止它。 我能够在内核代码中设置断点,并且gdb也会确认在那里的位置,但是问题是,一旦我开始执行并发出继续命令,就不会再打断点并且内核会继续运行...。

请在这方面帮助我。
谢谢。


如该线程中所指出的,您应该将断点设置为硬件断点,即-使用hbreak命令。 只有这样,断点才会被击中。


对于阅读此书的任何人,默认情况下调试器都不会中断软件断点,请参见相关文档:

"如果所使用的体系结构支持内核选项CONFIG_STRICT_KERNEL_RWX,则应考虑将其关闭。此选项将阻止使用软件断点,因为它会将内核内存空间的某些区域标记为只读。如果kgdb支持, 在使用的体系结构上,如果希望在CONFIG_STRICT_KERNEL_RWX选项打开的情况下运行,则可以使用硬件断点,否则需要关闭此选项。"

在https://www.kernel.org/doc/html/v4.14/dev-tools/kgdb.html

禁用RWX并重新编译,然后软件断点应该可以工作(此后它们在这里开始正常工作)