我一直致力于一个程序,在该程序中我使用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
}
答案 0 :(得分:1)
不应该跳过代码,通常这是源/ exe /和PDB文件不同步的标志。清理项目并重试(删除所有.exe,obj,pdbs)并确保您正在进行调试构建。
检查调试 - > Windows->模块。我刚刚测试了类似的场景,在断点上运行良好。检查PDB的时间戳,如图所示,以确保其是最新的
答案 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,问题已解决。