2015-09-07 4 views

ответ

3

Это еще один вариант использования для Reverse Debugging.

  1. Вы должны начать запись процесса и воспроизведение в какой-то момент:

    (gdb) record 
    
  2. Если вы хотите, чтобы увидеть последний исполненные строки, которые вы можете пойти в обратном направлении, как это:

    (gdb) reverse-step 3 
    

    или

    (gdb) reverse-next 3 
    
  3. Используйте этот ответ https://stackoverflow.com/a/1545732/72178, чтобы на самом деле распечатать следующие N строк.
+0

Спасибо! Это было именно то, что мне нужно. Работает как шарм –

1

Вы просто не можете сделать это (легко) в gdb, так как выполнение трассировки любой программы не хранится (и держать это было бы очень дорого: это замедлит много исполнение, и было бы использовать много ресурсов - память & дисковое пространство).

Однако вы можете использовать backtrace или bt команду gdb показать call stack, что текущий указатель команд в текущей функции, вызываемая функция, функция вызова вызывающей функции и так далее

BTW, если вы действительно этого хотели, вы могли бы написать последние gdb с помощью Python или Guile, чтобы предоставить вам такую ​​информацию. Вы, конечно, можете сохранить весь след (путем написания сценариев step & backtrace).

Смежные вопросы