Вы можете использовать --db-attach=yes
и --db-command=
для выполнения определенной команды, которую хотите остановить выполнение Valgrind. Но для обычного процесса отладки --db-command
вызывает gdb
с дочерним процессом. Таким образом, вы не можете остановить выполнение, убив процесс, используя --db-command=kill -9 %p
, потому что он просто убивает дочерний процесс, а не сам Valgrind.
Если вы используете Linux и имеете поддержку файловой системы /proc
, вы можете получить номер родительского процесса в 4-м столбце в /proc/PID/stat
. Таким образом, у вас есть шанс убить родительский процесс, чтобы остановить Valgrind.
Например,
valgrind --db-attach=yes --db-command="cat /proc/%p/stat | cut -d' ' -f4 | xargs kill -9" ./a.out
Когда появится первая ошибка, вам будет предложено
---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ----
И когда вы нажимаете Y
, он будет пытаться вызвать команду отладки. Таким образом, в этом случае он получит идентификатор родительского процесса, который является valgrind, и передаст сигнал KILL процессу. Поэтому Valgrind немедленно прекращается.