0

當我運行調試器時,沒有命中在Visual Studio中爲C++項目設置的斷點。Visual Studio中C++的斷點

當我啓動調試器我得到警告

調試信息「IEXPLORER.EXE」無法找到或不匹配。沒有符號加載。你想開始調試嗎?

我打yes繼續,但隨後的斷點我設置有一個警告說:

斷點不會被擊中當前。此文檔沒有符號加載

如何在調試項目時加載符號?我需要改變它的構建方式嗎?

回答

0

我要檢查的第一件事是您正在調試模式下構建。有一個組合框,您可以在工具欄中選擇Release和Debug模式。

在Release中,不包含調試信息。

第二件事是確保您將調試附加到正確的過程。您可以開始連接到進程(F5),也可以開始連接(Ctr-F5),然後手動連接(通過「調試」菜單,附加到進程)。

IEXPLORER是您當前附加的過程。你確定這是正確的嗎?

+0

我正在構建一個IE插件,所以是的,它應該是我附加的IEXPLORER。我打F5以調試模式啓動,當它運行時,Stop-Debugging菜單項可用,所以我認爲它確實在運行。 – opsb 2010-11-01 11:56:09

2

最新的Internet Explorer有不同的過程模型,它固有地禁用了ActiveX控件的調試(我認爲你正在嘗試調試)。有一個註冊表設置,但可能會幫助你。

HKLM \軟件\微軟\的Internet Explorer \首頁> TabProcGrowth:DWORD

將該值設置爲0,你應該能夠控制調試。

+0

我使用的是IE8,因此我嘗試設置此鍵並重新啓動Visual Studio。不幸的是,我仍然沒有得到任何輸出。 – opsb 2010-11-01 12:14:43

+0

解決了我的問題 – michaelr524 2013-02-20 19:40:32

1

它看起來像你想如果Internet Explorer給你的麻煩連接到正確的流程來調試擴展到Internet Explorer(工具欄,BHO等)

,你可以讓你的進程崩潰上然後JIT調試它。在DllMain中使用DbgBreakPoint來做到這一點。 Visual Studio應該彈出一個窗口,詢問您是否要調試它。這有點落後,但應該幫助您避免IE瀏覽器可能會執行的所有過程。

這也將允許您看到來自其他問題的調試輸出,因爲您將附加正確的過程。

1

您必須確保的三件事情:

  • 生成.pdb文件,其中包含在那裏你試圖打破代碼的DLL,並確保該.pdb文件包含源信息。如果你告訴我你使用哪種IDE /語言,我可以幫你確保。
  • 確保您的調試器找到這個.pdb文件;一個簡單的方法是複製。pdb文件接近你的二進制文件。如果加載了.pdb文件,Visual Studio菜單Debug\Windows\Modules中的工具窗口應在DLL文件行處的'Symbol Status'列中顯示'Symbol Loaded'。
  • 如果您使用另一臺計算機進行調試,而不是用於生成DLL文件的計算機,請確保兩臺計算機上的源文件位於相同路徑。

有了這個,你的斷點應該沒問題。

0

我遇到了這個問題,我能解決它的唯一方法是覆蓋「附加到進程」中的「自動確定要調試的代碼類型」選項。一旦我清除了「Silverlight」調試類型,那麼所有正確的模塊出現在iexplore.exe下,我的斷點點亮了,並且我能夠適當地進行調試。不知道爲什麼這是必要的,或者一直都是這樣,但這對我來說是有效的。