Показать текущую строку кода на C выполняется - PullRequest
2 голосов
/ 14 сентября 2009

Есть ли способ просмотреть код 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 приложение с графическим интерфейсом)

Возможно, использование будет в духе ..

$ 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 ]

2 голосов
/ 14 сентября 2009

Вы хотите DDD , который является графическим интерфейсом для GDB. Также: WinDBG хорошо, если вы используете Windows.

2 голосов
/ 14 сентября 2009

Вероятно, не идеально, но вы можете перейти в режим TUI (текстовый интерфейс пользователя), нажав 'c-x a' и перейти в одноклавишный режим с помощью 'c-x s' . В режиме одиночной клавиши нажмите 'n' для следующей команды.

См. Руководство GDB для получения дополнительной информации: http://sources.redhat.com/gdb/onlinedocs/gdb_23.html

1 голос
/ 14 сентября 2009

Учитывая комментарий NormD к этому ответу , мне интересно, может ли такая функция быть функцией Codewarrior или Chameleon.

1 голос
/ 14 сентября 2009

Я также не знаю ни одного инструмента для этого, но если вы собираетесь написать это самостоятельно, возможно, вы захотите изучить изменение / создание ловушки для утилиты покрытия кода. Например, gcov или lcov подсчитывают количество раз, которое выполняется строка, поэтому, безусловно, вы можете изменить источник для вывода этой строки и сна вместо простого увеличения счетчика.

0 голосов
/ 14 сентября 2009

Я никогда не видел и не слышал о таком инструменте, однако я подозреваю, что, поскольку GDB настолько встраиваем, у него должен быть приличный API, который вы, вероятно, могли бы использовать для создания этого приложения (и если вы это сделаете, мне нужна копия !).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...