有没有办法通过显示正在执行的当前当前行来查看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秒
(之前可能已经问过,但我不确定要搜索什么,因此找不到任何东西)
答案 0 :(得分:2)
可能不完美,但您可以按'cx a'进入TUI(文本用户界面)模式,然后按'cx s'更改为单键模式。在单键模式下,按'n'作为下一个命令。
有关更多信息,请参阅gdb手册: http://sources.redhat.com/gdb/onlinedocs/gdb_23.html
答案 1 :(得分:2)
答案 2 :(得分:1)
我也不知道这个的任何工具,但如果你打算自己编写,你可能想要研究修改/创建代码覆盖实用程序的钩子。例如,gcov或lcov都计算一行执行的次数,因此当然可以修改源以打印出该行并进行休眠,而不是仅仅递增一个计数器。
答案 3 :(得分:1)
鉴于NormD对this answer的评论,我想知道这样的功能是否可能是Codewarrior或Chameleon的功能。
答案 4 :(得分:0)
我从未见过或听说过这样的工具,但是我怀疑,因为GDB是如此嵌入,所以它必须有一个不错的API,你可以用来制作这个应用程序(如果你这样做,我想要一个副本!)。