很抱歉,如果這個問題已經回答了,但我沒有找到任何相關的。當調試器不正確地擊中斷點時,我在Visual Studio 2013 C++ Win32應用程序中遇到了一個奇怪的問題。這裏是一個示例代碼:錯誤的斷點被擊中
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a = 3;
int b = 1;
for (int i = 3; i >= 1; i--)
if (i % 2)
a = a*a;
b++;
return b;
}
我在b++
行設置斷點。我在調試c#代碼時非常熟悉調試和斷點(在C++中非常初學者),並且根據我的經驗,b++
行的斷點只有在for循環結束時纔會被觸發。但是它會觸發每個循環迭代,但代碼(增量)不會執行。 以下是VS的屏幕截圖,其中包含相關信息
您是否正在運行Release配置?您的一些線路可能會被優化,PDB中的線路號碼不匹配,只是猜測而已。出於這個原因,我們經常使用_Noopt_ builds,它與Release基本相同,但禁用了優化(假設我們不想使用完整的Debug配置)。 – PuerNoctis 2014-11-23 09:31:30
嘗試清理並檢查是否有發佈版本。 – AlexTheo 2014-11-23 09:32:45
1)不,我在調試模式下運行。 2)導致本地人是正確的,但在這一點上不應該擊中斷點。 – Crypt32 2014-11-23 09:35:05