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. 如何從Java內部找到並終止正在運行的進程?
- 4. 在正在運行的Docker容器中終止進程
- 5. 如何在matlab中終止正在運行的進程?
- 6. 所有子進程終止後,無法運行父進程。
- 7. 終止python中的所有正在運行的進程
- 8. 「在終端中運行」的奇怪行爲,它會終止進程
- 9. 在OpenWRT上自動運行任何已終止的進程
- 10. 如何在Valgrind中運行我的程序時進行調試?
- 11. 從java執行外部進程。在進程終止後得到輸出,但在終止之前需要輸出
- 12. 長時間運行的進程遠程終止?
- 13. gdb:中斷正在運行的進程沒有終止子進程
- 14. 父進程在C#中終止時如何終止子進程
- 15. 後臺進程在其父進程終止時被終止?
- 16. 在終止狀態線程上運行()
- 17. 程序在運行前終止?
- 18. 程序在終止後繼續運行
- 19. 如何在瀏覽器進程被終止時運行javascript?
- 20. 檢查進程是否正在運行並終止它
- 21. 如何在Java GUI中運行和終止Fedora進程
- 22. 在PHP窗口關閉事件中終止運行MySQL進程
- 23. Python外部進程沒有終止
- 24. 運行終止線程的Java的Android
- 25. 在命令行中終止進程樹的進程(Windows)
- 26. 應用程序進程永不終止每次運行
- 27. 主線程終止後進程繼續運行?
- 28. 終止進程在linux
- 29. 進程不終止
- 30. 終止進程 - AHK
我在嘗試之前嘗試過'殺死-SIGTERM',但是valgrind停止(〜10分鐘)需要很長時間,所以我懷疑它不起作用。感謝您的回答。 –
延遲是掃描所有分配的內存,試圖解決是否存在任何泄漏 - 這可能需要比平時更長的時間,因爲處於運行中的程序可能比正常退出的程序分配更多的內存。 – TomH
這在OS X 10.7.5和valgrind-3.8.1上不適用。 valgrind會高興地忽略殺人。 –