Visual Studio会跳过代码行

时间:2016-01-15 08:17:48

标签: c++ windows visual-studio debugging dll

我一直致力于一个程序,在该程序中我使用EnumWindows函数来检测活动Windows并将其句柄保存在列表中。 现在,每次我运行到目前为止,调试器只是使用EnumWindows函数跳过该行而不返回错误。

我的代码有问题吗?或者我是否需要另外的库才能访问此功能?希望有人知道如何解决这个问题 这是包含EnumWindows的类的代码:

Center :: Center(int initInterval) : interval(initInterval)
{
    detectWindows();
}

int Center :: getInterval()
{
    return interval;
}
void Center :: setInterval(int intrvl)
{
    interval = intrvl;
}

void Center :: initializeDisplays()
{

}

void Center :: detectWindows()
{
    EnumWindows(detectWindowsProc, (LPARAM)&windowList);  //Debugger skips this line
}

3 个答案:

答案 0 :(得分:1)

不应该跳过代码,通常这是源/ exe /和PDB文件不同步的标志。清理项目并重试(删除所有.exe,obj,pdbs)并确保您正在进行调试构建。

检查调试 - > Windows->模块。我刚刚测试了类似的场景,在断点上运行良好。检查PDB的时间戳,如图所示,以确保其是最新的 enter image description here

答案 1 :(得分:1)

'跳过'是什么意思?调试器将跳过它,执行它,但由于没有可用于Windows功能的调试信息,因此无法进入它。通常,如果在$http(myHttpConfig).then(function(data) { // `data` here is `response`! console.log(data.success); // undefined // `response` does not have `success` property so it is undefined, so... // !data.success => !undefined => true // data.success == false => undefined == false => false }); 中放置断点,则应该触发断点。如果有要枚举的窗口,detectWindowsProc有一些奇怪的怪癖,请参阅MSDN并在那里注释以获取更多信息: it considers non-2xx status as error

答案 2 :(得分:-1)

我也遇到了这个问题。对我来说.pdb文件与.dll不同步 我更新了dll和pdb,问题已解决。