Я сделал ошибку памяти, которую довольно сложно отлаживать, что происходит каждый раз в нескольких прогонах командной строки, каждый из которых занимает около двух часов. Из-за этого, я думал, что это может быть хорошей идеей для создания журналов, как это:Как автоматически подключиться к процессу, управляемому valgrind изнутри gdb?
while true; do
valgrind ./command 2>&1 | tee command
grep -q Invalid && break
done
Проблема заключается в том, что мои журналы отладки и трассировки стека, производимые Valgrind не хватает, поэтому я решил добавить к --vgdb-error=0
командной строки. К сожалению, так как Valgrind теперь добавляет контрольную точку при запуске, мне нужно выполнить следующую команду:
$ gdb ./command
...gdb init string follows...
(gdb) target remote | /usr/lib/valgrind/../../bin/vgdb
Remote debugging using | /usr/lib/valgrind/../../bin/vgdb
relaying data between gdb and process 4361
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
[Switching to Thread 4361]
0x04000840 in ??() from /lib/ld-linux.so.2
(gdb) continue
Continuing.
Как я могу сценарий процесс так, что либо Valgrind не ломается при запуске или скрипт продолжает прикрепляться к vgdb процессов и сказать их продолжать, пока один из процессов не завершится ненормально?
Если все идет хорошо, я получаю «Удаленное соединение закрыто» после 'continue'. – d33tah
Почему бы не использовать --vgdb-error = 1, а затем прикрепить отладчик после ошибок? – bonsaiviking