Gdb 当在同一地址加载多个断点时,如何在特定程序中设置断点?

Gdb 当在同一地址加载多个断点时,如何在特定程序中设置断点?,gdb,kernel,qemu,gdbserver,Gdb,Kernel,Qemu,Gdbserver,我正在调试一个由内核和一些用户程序组成的系统,我想跟踪其中一个用户程序。问题是它们都加载在同一个虚拟地址;因此,当我在一个地址设置断点时;在我的任何用户程序中,当执行经过此地址时,它会被命中。 我知道解决这个问题的一个方法是将它们加载到不同的地址空间中,但如果有更好的方法,我想避免它 我使用qemu模拟x86体系结构以运行系统(内核+用户代码)。 为了调试,我使用了一个外部gdb客户端,它连接到qemu上运行的gdbserver。如何设置断点?您使用的是什么体系结构?它是什么系统(基于linux

我正在调试一个由内核和一些用户程序组成的系统,我想跟踪其中一个用户程序。问题是它们都加载在同一个虚拟地址;因此,当我在一个地址设置断点时;在我的任何用户程序中,当执行经过此地址时,它会被命中。 我知道解决这个问题的一个方法是将它们加载到不同的地址空间中,但如果有更好的方法,我想避免它

我使用qemu模拟x86体系结构以运行系统(内核+用户代码)。
为了调试,我使用了一个外部gdb客户端,它连接到qemu上运行的gdbserver。

如何设置断点?您使用的是什么体系结构?它是什么系统(基于linux?)?gdb的默认断点应该与代码相关,而不是与地址相关。如前所述,这与C无关。解决方案取决于您没有提供的内容。您使用的开发系统提供了什么?它的文档说明了什么?要设置断点,请使用break*address。@Ryker您是对的,它不是特定于c的;我更新了帖子。C是我正在编程的语言,您可以附加到断点,并检查寄存器和内存位置的值以确定是否停止。例如,在您的内核中,可能有一种方法可以通过它的命令名或它使用的文件名(包含在某些内核结构中)来区分进程。