25
A
回答
26
由於valgrind本身和它運行的客戶端程序都在一個進程中執行,因此沒有「內部進程」。
發送到該進程的信號將正常傳遞到客戶端程序。如果信號導致進程變暗,那麼valgrind的正常退出處理程序將運行並(例如)報告任何泄漏。
因此,舉例來說,如果我們在睡眠命令啓動的valgrind:
bericote [~] % valgrind sleep 240
==9774== Memcheck, a memory error detector
==9774== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==9774== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==9774== Command: sleep 240
==9774==
然後殺死命令:
bericote [~] % kill -TERM 9774
那麼該過程將退出,並Valgrind的的退出處理程序將運行:
==9774==
==9774== HEAP SUMMARY:
==9774== in use at exit: 0 bytes in 0 blocks
==9774== total heap usage: 30 allocs, 30 frees, 3,667 bytes allocated
==9774==
==9774== All heap blocks were freed -- no leaks are possible
==9774==
==9774== For counts of detected and suppressed errors, rerun with: -v
==9774== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 6 from 6)
[1] 9774 terminated valgrind sleep 240
唯一的例外是kill -9
,因爲在那種情況下pro cess在沒有被告知信號的情況下被內核殺死,所以valgrind沒有機會做任何事情。
相關問題
- 1. 在進程終止時運行腳本
- 2. 終止長時間運行的進程
- 3. 如何在matlab中終止正在運行的進程?
- 4. 所有子進程終止後,無法運行父進程。
- 5. 「在終端中運行」的奇怪行爲,它會終止進程
- 6. 在OpenWRT上自動運行任何已終止的進程
- 7. 如何在Valgrind中運行我的程序時進行調試?
- 8. gdb:中斷正在運行的進程沒有終止子進程
- 9. 父進程在C#中終止時如何終止子進程
- 10. 後臺進程在其父進程終止時被終止?
- 11. 程序在終止後繼續運行
- 12. 程序在運行前終止?
- 13. 如何在瀏覽器進程被終止時運行javascript?
- 14. Python外部進程沒有終止
- 15. 在命令行中終止進程樹的進程(Windows)
- 16. 應用程序進程永不終止每次運行
- 17. 主線程終止後進程繼續運行?
- 18. 終止進程在linux
- 19. 終止子進程
- 20. WKWebView進程終止
- 21. 混合運行終止我的程序
- 22. 並行啓動多個進程,並在X秒內終止所有進程
- 23. 終止程序退出時在線程中運行的子進程
- 24. 無法終止使用WMI的進程,但taskkill可以運行
- 25. 如何觀察以Visual C++運行或終止的新進程
- 26. 編譯器內部錯誤。進程終止退出代碼3
- 27. 運行valgrind
- 28. Pm2進程停止運行
- 29. 如何排除某些子進程在valgrind下運行?
- 30. 程序停止運行在終端上,但進程仍然存在
我在嘗試之前嘗試過'殺死-SIGTERM',但是valgrind停止(〜10分鐘)需要很長時間,所以我懷疑它不起作用。感謝您的回答。 –
延遲是掃描所有分配的內存,試圖解決是否存在任何泄漏 - 這可能需要比平時更長的時間,因爲處於運行中的程序可能比正常退出的程序分配更多的內存。 – TomH
這在OS X 10.7.5和valgrind-3.8.1上不適用。 valgrind會高興地忽略殺人。 –