簡體   English   中英

VS2017中沒有斷點

[英]Breakpoint is not hit in VS2017

我有一個從VS(Visual Studio)2010移植到VS2017的解決方案,可從一台計算機移植到另一台計算機。 我可以調試,但不能調試。 我要知道有什么問題 運行時,我看到斷點標記已更改為包含警告,但我找不到可能出錯的地方。 看來一切都很好。

1)嘗試重建應用程序。 確保它處於“ 調試 ”模式。

2)如果它在VS2010中工作正常,但在VS2017中失敗,我想知道Visual Studio是否混淆了正確代碼類型的配置,如果這樣,您可能需要手動選擇.NET版本。 如果在VS2010中使用Framework 3.5,但在Visual Studio 2017中使用諸如Framework 4.6,則默認情況下會自動確定要調試的代碼類型(v4.6,v4.5,v4.0)。 在這種情況下,您需要單擊“附加到進程”窗口上的“選擇...”按鈕, 然后選擇托管(v3.5,v3.0,v2.0)

3)嘗試從“調試”菜單中清除/刪除所有斷點,選擇“刪除所有斷點”。 原因是它刷新了項目的Visual Studio設置文件。

4)潛在的解決方法 :在“選項”,“調試”中取消選中“要求源文件與原始版本匹配...”。

啟動該過程時,如果斷點圖標變成帶有警告符號的空心符號,則調試器將無法確定程序的哪一部分與源代碼的該行相對應。 這通常是因為生成文件與可執行文件,DLL或PDB文件已過時。

進入這種情況的一種常見方法是不注意構建失敗,然后讓調試器嘗試運行與當前源代碼不對應的舊可執行文件。 如果Visual Studio對某些依賴項感到困惑,並且沒有重建需要重建的所有內容,那么也會發生這種情況(在解決方案和/或項目文件進行重大更改后,例如,在升級之后,可能會發生) 。

在這種情況下,請清除構建目錄並強制Visual Studio重建所有內容。 通常,這會使您恢復同步。

當您在DLL代碼中設置斷點時,該斷點將以空心警告狀態顯示,直到DLL被加載為止。 如果您的程序使用延遲加載,或者如果它是手動加載DLL(例如,通過LoadLibrary調用)的,則通常會看到這種情況。 一旦加載了DLL,DLL中的任何斷點圖標都應返回到正常的紅球狀態。 如果還沒有,則認為該DLL應該已經加載。 檢查調試器中的“輸出”窗口,以查看它是否確實已加載,以及從該DLL加載相應符號時是否存在任何警告或錯誤。

就我而言,從“ 發布 ”模式更改為“ 調試 ”模式有效!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM