2009-02-12 165 views
17

當我要在VS2005中調試C++程序時,程序並沒有停在 的斷點處。爲什麼我不能調試?

VS表示「沒有符號加載任何調用堆棧幀,源代碼不能顯示」。

我該怎麼辦?

+0

你在調試一個exe或dll嗎? – 2009-02-12 09:01:52

+0

意外地殺死「mspdbsrv.exe」後,發生在我身上。殺死devenv.exe的孩子是我有時用來阻止monstruos構建的方法,當「取消構建」無響應時。 – Liviu 2014-09-08 13:32:40

+0

嘗試瞭解另一個實例(例如,您的應用程序的發佈版本)是否在後臺運行! – 2015-04-21 17:09:20

回答

19

感謝大家。

最後,我找到了解決方案here

要啓用調試:

1)轉到項目 - >的HelloWorld屬性

2)在左側展開 「配置屬性」

3)展開 「C/C++」

4)在左側,選擇「常規」

5)在右側,將「調試信息格式」到 「節目數據庫編輯並繼續(/ ZI)」

5)在左側,選擇 「優化」

6)在右側,變化 「優化」 爲 「Disabled(/ OD)」

7)在左側,展開 「鏈接」

8)在左側,選擇 「調試」

9)在右側,變化 「生成調試信息」,以 「是」

10)單擊確定

11)設置斷點

12)運行你的應用程序使用Ctrl + F5來構建和運行它的時候重新構建應用程序

而且,這保持控制檯窗口打開足夠長的時間你看到你的輸出。

1

這聽起來像你附加到一個進程而不是運行傳統的調試會話?如果確實附加到進程中,確保您嘗試調試的二進制文件是使用當前在IDE中打開的相同源代碼構建的,這一點非常重要。

+0

錯誤的源代碼仍然應該中斷,只是在源代碼中的奇怪位置。如果沒有中斷,這可能是一個符號問題,而不是源代碼問題。 – 2009-02-12 09:00:59

+0

如果源代碼與不會中斷的源代碼相同(我已經注意到了這一行爲) – 2009-02-12 09:11:01

3

無論出於何種原因,您在符號路徑中沒有正確的符號(.pdb文件)。這可能有以下幾個原因:

1)您的二進制文件比.pdb文件更近編譯。嘗試重新編譯一切。

2)您正試圖調試.dll並忘記複製.pdb文件。也複製這些文件。

也有可能你的代碼沒有像你想象的那樣被執行。

1

徹底清理並重建,確保.pdb被創建?

4

幾個步驟來嘗試:進入

  1. 調試 - >步驟(這將確保你停止啓動後右)
  2. 調試 - > Windows的>模塊
  3. 查找您的FOO。 exe列表中。
  4. 檢查符號狀態。它是否說它已加載?
  5. 如果沒有,去的道路,並確保: 一)有一個名爲foo.pdb有 二)文件上foo.pdb時間戳匹配foo.exe的(或非常接近)
0

我嘗試調試我的單元測試時遇到過這個問題(在VS中使用c#)。

您可以添加以下代碼,將啓動調試器,將允許您通過您的代碼喲一步像正常的新實例:

System.Diagnostics.Debugger.Launch(); 
System.Diagnostics.Debugger.Break(); 
0

我想補充的MainID尚未覆蓋的另一種可能性:

調試時,我竟開始有些程序會調用到我要調試的類(這是某種加上的)。被調用的程序部分用非託管C++編寫。當我選中「啓用非託管代碼調試」時,錯誤會出現(隨後程序崩潰),因爲程序沒有任何調試信息。

0

我已經這樣做在WP7解決了這個問題:

  1. 右擊從Solution Explorer中的項目(按Ctrl + W + S
  2. 選擇重建。
  3. 再次,選擇該項目,右鍵單擊它並選擇部署。
  4. 開始調試(F5)

我希望它會幫助你的!

相關問題