我的程序使用環境變量DBG_MSG
值來確定調試消息的級別。 DBG_MSG=3
打印最大調試信息。在linux中爲正在運行的程序設置環境變量
但是,每當程序以奇怪的方式行事時,環境變量未設置爲打印完整的調試信息。當程序重新運行環境設置時,它不會顯示相同的錯誤。
我正在考慮爲SIGUSR1
實現一個信號處理程序,以便在運行時使用putenv(3)
來設置此環境變量。這樣我可以將信號發送到掛起的作業,以使其打印更多的調試信息。
做這件事時要採取什麼安全措施?
有沒有其他方法可以從外部改變正在運行的程序的環境?
我很困惑。其他人可能也會如此。 – user3344003
問題在於,當打印調試消息時,這個錯誤消失了,這意味着你的程序調用了未定義的行爲,所以調試器會有很大的幫助,像[valgrind](http://www.valgrind.org)這樣的內存調試器甚至會幫助更多,發佈有問題的代碼將對可能幫助你的人有幫助。 –
@iharob你說的是真實的,除了這更可能是導致死鎖而不是內存損壞問題的競爭條件(所以'helgrind',而不是'valgrind'也許),並且描述讓我覺得我們是談論一個非常龐大,複雜的網絡守護進程,即使是精簡版的發佈也不太實際。 – zwol