显示正在执行的C代码的当前行

时间:2009-09-13 21:38:11

标签: c debugging

有没有办法通过显示正在执行的当前当前行来查看C代码“实时”?

你可以使用GDB,但我想知道是否有一些比保持返回键更优雅的东西:

$ gdb ./mycode
(gdb) break 1
Breakpoint 1 at 0x100000f08: file mycode.c, line 1.
(gdb) run
Starting program: mycode 

Breakpoint 1, main () at mycode.c:4
4        for(x = 0; x < 4; x++){
(gdb) next
5            printf("Example\n");
(gdb) [press return]
Example
4        for(x = 0; x < 4; x++){
(gdb) [press return]

性能不是问题(很明显,所有printf()都会减慢速度,这很好)。理想情况下,解决方案是命令行工具(或者OS X兼容的GUI应用程序)

也许用法是......

$ viewlivec --delay 500 -- ./mycode -mycodes=arg --verbose
01: int main(){
02: int x;
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
03: for(x = 0; x < 4; x++){
04: printf("Example\n");
05: }
06: }

--delay标志在每行之间等待0.5秒

(之前可能已经问过,但我不确定要搜索什么,因此找不到任何东西)

5 个答案:

答案 0 :(得分:2)

可能不完美,但您可以按'cx a'进入TUI(文本用户界面)模式,然后按'cx s'更改为单键模式。在单键模式下,按'n'作为下一个命令。

有关更多信息,请参阅gdb手册: http://sources.redhat.com/gdb/onlinedocs/gdb_23.html

答案 1 :(得分:2)

你想要DDD,这是GDB的一个gui。 另外:如果你正在运行Windows,WinDBG会很好。

答案 2 :(得分:1)

我也不知道这个的任何工具,但如果你打算自己编写,你可能想要研究修改/创建代码覆盖实用程序的钩子。例如,gcovlcov都计算一行执行的次数,因此当然可以修改源以打印出该行并进行休眠,而不是仅仅递增一个计数器。

答案 3 :(得分:1)

鉴于NormD对this answer的评论,我想知道这样的功能是否可能是Codewarrior或Chameleon的功能。

答案 4 :(得分:0)

我从未见过或听说过这样的工具,但是我怀疑,因为GDB是如此嵌入,所以它必须有一个不错的API,你可以用来制作这个应用程序(如果你这样做,我想要一个副本!)。