Я ищу "посмотреть" программу по мере ее выполнения. Я хочу, например, отслеживать указатель стека программ, поскольку он изменяется через выполнение. Я рассматривал скрипты GDB с помощью python, но решения для этого очень затруднительные - до сих пор я не был успешным при установке PythonGDB. Если у кого-то есть какие-либо решения/рекомендации относительно того, как подойти к этой проблеме, я был бы очень благодарен.
EDIT: Я должен был упомянуть, я ищу, чтобы записать эти значения - идеально автоматически - чтобы иметь возможность просматривать их впоследствии. Я понимаю, что GDB позволяет мне проходить через программу и просматривать каждое состояние, но я хочу автоматизировать этот процесс, чтобы "смотреть", как изменяются определенные значения (такие как SP) со временем.
Это решение 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
ubiQ,
Я всегда использовал IDLE для отладки. Сделайте поиск в Google. Надеюсь, это поможет, если нет, дайте мне знать!