【问题标题】:Show current line of C code being executed显示当前正在执行的 C 代码行
【发布时间】:2009-09-14 06:14:07
【问题描述】:

有没有办法通过显示当前行来“实时”查看 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()'ing 减慢很多,这很好)。理想情况下,解决方案是命令行工具(或者兼容 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 秒

(以前可能有人问过这个问题,但我不确定要搜索什么,因此找不到任何东西)

【问题讨论】:

    标签: c debugging


    【解决方案1】:

    可能并不完美,但您可以通过按 'c-x a' 进入 TUI(文本用户界面)模式,然后按 'c-x s' 更改为单键模式>。在单键模式下,按 'n' 来执行下一个命令。

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

    【讨论】:

      【解决方案2】:

      你想要DDD,它是 GDB 的 gui。 另外:WinDBG 如果您运行的是 Windows,则很好。

      【讨论】:

        【解决方案3】:

        我也不知道有什么工具可以做到这一点,但是如果您要自己编写这个,您可能需要考虑修改/创建一个代码覆盖实用程序的挂钩。例如,gcovlcov 都计算一行被执行的次数,因此您当然可以修改源以打印出该行并休眠,而不是仅仅增加一个计数器。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-04-11
              • 2020-04-06
              • 2017-12-01
              • 2014-02-27
              • 2018-05-23
              相关资源
              最近更新 更多