簡體   English   中英

Visual Studio 2012 Express調試explorer.exe-沒有斷點

[英]Visual Studio 2012 Express debugging explorer.exe - no breakpoint hit

我在調試SolidWorks Enterprise PDM插件時遇到問題。 我不知道如何在EPDM中處理插件,但是問題似乎與Visual Studio有關-也許其他平台的插件也有類似的問題。

添加調試插件(以便使用最新的源): PDM調試插件

在Visual Studio 2010 Express中沒有問題-殺死瀏覽器,啟動它,附加到它,並: VS2010調試成功

使用Visual Studio 2012 Express無法實現相同的目的。 盡管它似乎是調試資源管理器(文件是只讀的,顯示了停止調試按鈕),但它沒有遇到斷點: VS2012調試失敗

我在Windows 7 Professional x64上工作。 外接程序是使用.NET 3.5構建的。 我已經將VS2010和VS2012解決方案都使用了相同的問題。

我確實重新啟動explorer.exe,所以加載了最新版本的插件。 項目使用啟動操作“ explorer.exe”:

    <StartAction>Program</StartAction>
    <StartProgram>$(windir)\explorer.exe</StartProgram>
    <StartArguments></StartArguments>

我不知道為什么沒有達到斷點,非常感謝任何幫助。

謝謝!

更新1

我檢查了漢斯的建議-還有另外兩個過程正在啟動,但是附加到它們上沒有任何結果。

那指出了另一件事-當我附加到那些進程時,在Visual Studio中有一個信息,即不會命中斷點,因為沒有加載調試符號-請注意,在附加第三個映像中加載了調試符號(紅色圓圈填充且沒有感嘆號)。

更新2

當我將VisualStudio附加到托管的explorer.exe時,斷點被擊中!

似乎explorer.exe有時僅在托管模式下運行: Explorer.exe以不同的方式

它甚至可以同時在兩種模式下運行: 兩種模式的explorer.exe

因此,問題是如何強制Visual Studio在托管模式下啟動explorer.exe?

更新3

它可能是VisualStudio 2012錯誤嗎?

使用VS2010進行調試時,資源管理器以正常模式啟動,但是加載加載項后,它將切換到托管模式,並且VS2010在斷點處停止。

與VS2012不同的是-加載加載項時,explorer.exe不會切換到托管模式,並且不會命中斷點(因此是否已連接?)。

但是,當VS2012附加到已經處於托管模式的explorer.exe時,它將在斷點處停止。

更新4

我設法解決了問題的實質-在將VS2012附加到具有“自動確定要調試的代碼類型”的另一個進程(例如explorer.exe)時,該進程以純模式啟動,並且稍后加載托管代碼-調試器不會在斷點處停止。當進程已經處於托管模式時,在附加到或使用明確選擇的代碼類型附加時(“托管(v3.5,v3.0,v2。 0)“)-調試器在斷點處停止。

已經發布在連接上 -等待解決方案。 如果遇到與此更新中所述相同的問題,請投票。

更新5

我剛剛在一個簡單的托管外殼擴展上對其進行測試,因此它與SolidWorks Enterprise PDM不相關。

我還發布了一個關於連接的更精確的錯誤

更新6

截至2013年初,Microsoft聲稱調試器的行為不符合預期是一項設計決定 在第一個連接錯誤報告中有更多詳細信息。

當您構建.dll (我以這種方式將其加載到資源管理器中)時,斷點總是有問題(至少以我的經驗),因為您無法事先知道文件將在內存中的加載位置,因此很難添加一個斷點。

您可以嘗試在代碼( int3 )中添加手動斷點調用 在C ++中,這將是:

asm {
    int 3;
}

在C#中, 有一種方法可以實現

System.Diagnostics.Debugger.Break()

嘗試添加到函數/代碼部分的開頭(不要忘記在調試模式下進行協編譯)。

然后,您將開始調試加載了.dll文件的應用程序( .exe ),並且加載的庫應觸發斷點。

暫無
暫無

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

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