2011-07-29 87 views
1

在我的Visual C++代碼中,我引入了一個__debugbreak語句來觸發斷點。我用/ CLR選項編譯了項目。但它在執行期間不會觸發斷點。爲什麼會發生?在拍攝自己之前請幫忙。這在64位可執行文件中。__debugbreak語句不觸發斷點

編輯:我現在試着用DebugBreak()語句,它現在是永久掛起,不知道在哪個語句。該DLL由服務器程序使用,我正從另一臺機器上的客戶端訪問該程序。這是什麼導致問題?我應該從服務器機器本身運行它嗎?我期望它至少報告一個關於正在觸發的斷點的消息,即使它無法在客戶端計算機上成功啓動調試器會話。 .pdb文件在dll的相同位置的服務器上可用。

更新:我只是嘗試在服務器機器本身上運行客戶端程序,但仍然DebugBreak()導致無限掛起。調試器會話不會啓動。

回答

0

爲什麼不能在調試器中使用F9(斷點)? A DebugBreak();應該可以工作。

如果無法直接加載DLL/EXE,可以從「調試」菜單中「附加到進程」(希望您使用的是Visual Studio)。

1

我用這個代碼在C#中,也許你能適應它的C++

#if DEBUG 
var endTime = DateTime.Now.AddSeconds(30); 
while (!System.Diagnostics.Debugger.IsAttached && DateTime.Now < endTime) 
    System.Threading.Thread.Sleep(10); 

if (System.Diagnostics.Debugger.IsAttached) 
{ 
    System.Diagnostics.Debugger.Break(); 
} 
#endif