gpt4 book ai didi

debugging - 有没有办法在 Valgrind 发现第一个错误时停止它?

转载 作者:行者123 更新时间:2023-12-03 06:50:19 25 4
gpt4 key购买 nike

如果在 valgrind 的输出中发现错误,我想使用程序的调试版本生成输出。然而,在调试中进行数千次运行的 valgrind 过于耗时。

所以我想做的是在 Release模式下运行,如果发现错误则中止运行并在调试中完成测试。

除了监控输出并手动终止进程之外,还有更好的解决方案吗?

最佳答案

您可以使用--db-attach=yes--db-command=来执行您想要停止Valgrind执行的特定命令。但对于正常的调试过程,--db-command 使用子进程调用gdb。因此,您不能通过使用 --db-command=kill -9 %p 终止进程来停止执行,因为它只是终止子进程,而不是 Valgrind 本身。

如果您使用的是 Linux 并且有 /proc 文件系统支持,您可以在 /proc/PID/stat 的第 4 列中获取父进程号。这样你就有机会杀死父进程来停止 Valgrind。

例如,

valgrind --db-attach=yes --db-command="cat/proc/%p/stat | cut -d' ' -f4 | xargs Kill -9"./a.out

出现第一个错误时,系统会询问您

---- 附加到调试器? --- [返回/N/n/Y/y/C/c] ----

当您按Y时,它将尝试调用调试命令。所以在这种情况下,它将获取父进程ID,即valgrind,并向该进程发送KILL信号。因此,应立即停止Valgrind。

关于debugging - 有没有办法在 Valgrind 发现第一个错误时停止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16345555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com