我一直是C程序員多年,我最喜歡的「調試器」一直是printf()函數 - 當絕對強制使用時,我只使用visual studio的調試器,因此從未非常熟練地使用它。最近我不得不修改一個程序,從C到C++(儘管當然printf仍然正常工作),並且程序的一部分現在已經出現在多個線程中(一個針對多核機器上的每個內核)以使程序運行更快。現在,我毫無疑問會遇到類似死鎖這樣的尷尬的多線程相關錯誤,並且我想知道我可以調用哪些調試方法。視覺工作室(2008)有我能合理需要的一切幫助我解決與線程有關的錯誤嗎?我現在應該花點時間學習如何使用第三方調試器嗎?我可以用我的老式printf來解決大多數問題嗎?調試多線程程序
我可以寫代碼,如果一直等待進入臨界區時會打印類似於「線程X等待輸入......但由於被線程Y使用而被阻塞」的代碼?
這可以通過使用WIN32 API函數void SetThreadName(DWORD dwThreadID,LPCSTR szThreadName)在「純」本機C和C++中實現。這些名稱也應該顯示在VS調試器中(我沒有檢查過)。 – mmmmmmmm 2009-09-28 16:11:14