gdb-gdbserver跟踪远程程序执行
我试图提取我的程序的执行序列,比如本地计算机windows x86上的gdb程序计数器和远程目标arm linux上的gdbserver程序计数器。我的想法是在源文件的重要行插入断点,例如:在特定函数的开头,更一般地说,在每个断点都有一个高忽略计数的条件语句前后插入断点,然后检查是否命中断点。实际上,我可以用这种方法接收信息,但有一个问题:我正在调试的应用程序行为依赖于实时性,而这种特定的方法会大大降低程序的执行速度。你认为我可以用gdb的其他方法吗?我偶然发现了追踪点,它似乎正是我要寻找的东西,但我没能为它们找到一些类似于计数器的属性。我目前使用的gdb版本是7.5gdb-gdbserver跟踪远程程序执行,gdb,embedded-linux,remote-debugging,gdbserver,Gdb,Embedded Linux,Remote Debugging,Gdbserver,我试图提取我的程序的执行序列,比如本地计算机windows x86上的gdb程序计数器和远程目标arm linux上的gdbserver程序计数器。我的想法是在源文件的重要行插入断点,例如:在特定函数的开头,更一般地说,在每个断点都有一个高忽略计数的条件语句前后插入断点,然后检查是否命中断点。实际上,我可以用这种方法接收信息,但有一个问题:我正在调试的应用程序行为依赖于实时性,而这种特定的方法会大大降低程序的执行速度。你认为我可以用gdb的其他方法吗?我偶然发现了追踪点,它似乎正是我要寻找的东西
事先非常感谢。如果您的程序执行速度不能减慢,您可能需要一些硬件工具。请看这些: 可能还有其他类似的解决方案
对于内核代码,请考虑在目标上使用K探测和jPo探测。您可以使用它们将这些命中计数器保留在代码的有趣部分。不确定用户代码是否存在类似的机制,但我认为这是可能的。