После выполнения программы

1

Я ищу "посмотреть" программу по мере ее выполнения. Я хочу, например, отслеживать указатель стека программ, поскольку он изменяется через выполнение. Я рассматривал скрипты GDB с помощью python, но решения для этого очень затруднительные - до сих пор я не был успешным при установке PythonGDB. Если у кого-то есть какие-либо решения/рекомендации относительно того, как подойти к этой проблеме, я был бы очень благодарен.

EDIT: Я должен был упомянуть, я ищу, чтобы записать эти значения - идеально автоматически - чтобы иметь возможность просматривать их впоследствии. Я понимаю, что GDB позволяет мне проходить через программу и просматривать каждое состояние, но я хочу автоматизировать этот процесс, чтобы "смотреть", как изменяются определенные значения (такие как SP) со временем.

  • 0
    Вам может показаться интересным визуализатор программы Online Python Tutor . Хотя я полагаю, что это хорошо только для программ, которые могут поместиться в текстовое поле.
Теги:
debugging
gdb

2 ответа

1

Это решение SystemTap для тестовой программы с информацией об отладке:

Сначала тестовая программа на С++ (построена с g++ -g main.cpp):

>cat main.cpp

void a()
{
   char arr[12800];
}


void b()
{
   char arr[1280];
   a();
}


void c()
{
   char arr[128];
   b();
}

int main()
{
   char arr[12];
   c();
   return 0;
}

Затем SystemTap script:

>cat measure_f.stp
probe process("a.out").function("*")
{
  printf("%-10s: rbp:%x, rsp:%x, %d\n", probefunc(), register("rbp"), register("rsp"), register("rbp") - register("rsp"))
}

Тогда сам тест:

>sudo stap measure_f.stp -c ./a.out
main      : rbp:7fffd3707a10, rsp:7fffd3707a00, 16
c         : rbp:7fffd37079f0, rsp:7fffd3707970, 128
b         : rbp:7fffd3707960, rsp:7fffd3707460, 1280
a         : rbp:7fffd3707450, rsp:7fffd37042c8, 12680
0

ubiQ,

Я всегда использовал IDLE для отладки. Сделайте поиск в Google. Надеюсь, это поможет, если нет, дайте мне знать!

  • 0
    Привет, Ксанезис, я обновил свой оригинальный пост, чтобы отразить это, но мне нужна возможность автоматически записывать определенные значения (например, SP) по мере выполнения программы, это позволит мне увидеть, как состояние этих значений меняется со временем впоследствии. Есть ли у IDLE такая возможность?
  • 0
    Я верю в это, в любое время, он дает вам список всех переменных и их значений в программе. Надеюсь это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню