2010-05-07 47 views
4

我在Visual C++中的代碼中設置了一個斷點,但是當我運行時,我看到標題中提到的錯誤。「一個或多個斷點無法設置並被禁用,執行將在程序開始時停止。」

我知道這個問題之前已經被Stack Overflow(Breakpoints cannot be set and have been disabled)問過了,但是沒有一個答案完全解釋了我所看到的問題。我能看到的最接近於鏈接器的東西,但我不明白 - 如果有人能夠更詳細地解釋這將會很棒。

就我而言,我在Visual C++中有兩個項目 - 生產dsw和測試代碼dsw。我已經在調試模式下加載並重建了兩個dsws。我想要通過測試腳本運行的生產代碼中的斷點。我的問題是當我運行測試代碼時,我收到錯誤消息,因爲中斷點位於生產代碼中,當測試開始時,代碼不會加載。

在測試腳本的開頭附近有一個mytest_initialize()命令。我想這會消失並加載生產dll。一旦這條線執行完畢,我可以將斷點放入我的生產代碼並運行,直到我點擊它。但是要運行到這一行非常煩人,設置斷點並在我每次運行測試時都會繼續。

所以我覺得問題是Visual C++沒有意識到這兩個項目是相關的。這是一個鏈接器的問題?鏈接器應該做什麼以及應該更改哪些設置才能完成這項工作?

在此先感謝。道歉,如果相反,我應該附加這個問題到現有的,這是我的第一篇文章,所以不太確定這應該如何工作。

[更新1]我認爲Chris O發現了這個問題。如果我能夠解決如何使用項目設置來完成這項工作,我會添加更多更新。

+0

你有生成的代碼斷點在一些(自動)設置,這已經改變,但仍然VS試圖將斷點放在該位置或儘可能接近? – slugster 2010-05-07 11:20:58

回答

1

聽起來好像你使用的是VC6,因爲你提到了dsw文件。我認爲它和VC6一樣好,你必須在你的模塊從LoadLibrary加載後手動添加斷點。實際上,可能會有一個項目調試設置,因此您可以指定在調試項目時加載哪些DLL,這將在您點擊F5時啓用斷點。

您也可以嘗試在知道mytest_initialize()被調用後連接調試器,以便啓用斷點。

+0

你是對的,我正在運行VC6。 我還應該澄清一下,我從VC6直接運行測試腳本,所以我想調試器會立即連接。 我已經在項目設置 - >調試對話框中快速挖掘。看起來我應該可以在這裏解決這個問題。如果我在左側窗口中選擇我的測試項目,那麼我可以在Category:Additional DLLs下添加生產DLL。不幸的是,這並沒有什麼區別!我會多花一點時間 - 看起來這應該是解決問題的一種方法。 – sam 2010-05-07 11:46:02

0

我有時會遇到這個問題,但總是通過一些代碼替換操作。

Here是一些人的職位,他是如何修復它。

希望它有幫助。

0

在我的情況下,我通過將包含斷點的DLL項目設置爲活動項目並更改了此項目的調試設置(右鍵單擊項目>>設置>>調試選項卡)來指向實際運行的項目,訪問DLL。 「調試會話的可執行文件:」和「工作目錄:」應該設置爲您想要運行的可執行文件及其相應的目錄。

希望這有任何幫助。

0

右擊工程>>設置>>鏈接選項卡 支票上生成調試信息的鏈接 檢查增量

相關問題