草庐IT

DEBUGGING

全部标签

c++ - VS2013 调试器无法再解析包含源代码路径的系统环境变量

我目前正在使用VisualStudio2013(更新4)构建Qt5.4.0项目。我使用的是express版本,所以我不使用VS插件。我的.vcxproj文件是使用构建脚本和qmake从.pro文件生成的。在调试我的项目时,我有时会尝试进入Qt库代码。为此,我将Qt源代码的路径添加到解决方案属性->调试源文件设置中,如前一篇文章(VS2013debuggercannotfindQtsources)中所述。因为我有很多不同的项目,并且在Qt更新的情况下更新所有这些项目会很痛苦,所以我使用了指向该路径的系统环境变量“QTSRC”,并将以下行添加到解决方案中:$(QTSRC)这在前段时间非常有

python - GetProcAddress 返回值

我正在学习如何在Windows7上使用ctypes在python中创建一个简单的调试器。我的问题是下面给出的代码似乎返回了一个无效地址(这是我对问题的猜测),但我可以弄清楚为什么。我想这可能是因为返回的句柄在我的代码使用它时不再有效,或者我返回的句柄与我的脚本无关,因为我只是提供“msvcrt.dll”作为模块。我已经做了很多修补,但还没有找到解决方案。编辑:地址返回为False。我从下面的代码片段中收到以下错误:错误126:找不到指定的模块。deffunc_resolve(self,dll,function):error=Nonehandle=kernel32.GetModuleHa

windows - 如何强制 Windows 调试应用程序?

目前我正在尝试调试应用程序,但是,每次它崩溃时,我都会看到:取而代之的是:如您所见,没有Debug按钮,所以我无法调试崩溃!它仅发生在这个应用程序中;该按钮与所有其他崩溃的应用程序一起出现。 最佳答案 看起来WER(Windows错误报告)正在处理此应用程序的崩溃。据我所知,WER会处理所有非.NET应用程序或没有自己的崩溃处理程序的应用程序的崩溃。在第二张截图中,第三个文件是一个hdmp文件。这是一个由WER生成的完整转储文件,您可以使用windbg对其进行分析。有关在WinDBG中分析用户模式转储的更多信息位于此MSDN链接上:

c - 数据断点是如何创建的?

我只是想知道数据断点(又名观察点)是如何创建的?我知道常见的断点是在x86上用一些特殊的INT3指令创建的。我想您可以通过定期扫描内存来创建软件观察点。但是从我自己写硬件断点调试器的角度来看,我在WindowsReference里面找不到任何东西关于这个(WinDbg上只有这两个主题12)。我还没有在Linux上看过。有什么想法吗?谢谢 最佳答案 在x86处理器上,您可以使用debugregisters设置数据断点。在处理器上。调试寄存器DR0-DR3存储要观察的地址。这就是VisualStudio限制为四个数据断点的原因。

c++ - 从内存地址获取到源代码中的函数

使用ProcessExplorer工具,我知道我的进程在一个特殊函数处挂起myexe.exe+0x1b5773如果我有可用的pdb,是否有办法获得准确的功能?还是必须有此信息的.map文件?我知道我可以使用调试器附加到exe,但如果问题发生在非开发人员机器上,这现在始终是一个选项.. 最佳答案 进程浏览器这可以在Options|Configuresymbols...下的ProcessExplorer中完成:选择dbghelp.dll设置符号路径SRV*c:\debug\symbols*http://msdl.microsoft.co

c++ - Visual Studio 跳过代码行

我一直在开发一个程序,在该程序中我使用EnumWindows函数来检测事件的Windows并将它们的句柄保存在列表中。现在,每次我运行到目前为止的内容时,调试器都会跳过带有EnumWindows函数的行,而不会返回错误。我的代码有问题吗?或者我是否必须获得额外的库才能访问此功能?希望有人知道如何解决这个问题这是包含EnumWindows的类的代码:Center::Center(intinitInterval):interval(initInterval){detectWindows();}intCenter::getInterval(){returninterval;}voidCent

windows - 错误检查后禁用自动重启

我想在Windows发生任何类型的崩溃后绝对禁用自动重启。所以,我设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\AutoReboot设置为0,这应该会禁用自动重启。但是,下次计算机检查错误时,它会自动重新启动。为什么? 最佳答案 更改任何设置后HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl您必须重新启动计算机才能使更改生效。

windows - 编写自己的 "mixed mode"调试器时如何与 Visual Studio native 调试器交互?

过去几天我一直在谷歌、博客和MSDN上搜索有关如何在VisualStudio中实现“互操作”或“混合模式”调试的任何小信息。我正在尝试为自定义VM实现我自己的调试器(实际上,它将JIT编译为native代码,这意味着只要正常native调试器输入JIT代码,我就必须为它重建调用堆栈),但我找不到任何关于如何实际与VS的native调试器交互并执行花哨的“native/托管”的信息,例如VS的混合模式调试所实现的转换。到目前为止,我发现了一些可以提供有用花絮的东西,但还不足以真正与调试器交互。我发现的最好、最有用的文章是:MikeStall的各种博客文章(主要是thesetwo)虽然提供

c - 在 Win 10 而非 Win 7 中卸载 DLL 时调试崩溃

不完全确定我是否已经解决了这个问题,但这是我所看到的以及我认为正在发生的事情。我有一个主要用C编写的Win32程序,它加载一个C++DLL。该DLL通过COM对象将数据从C程序传递到另一个应用程序——一个可能由DLL本身实例化的对象。所有这一切显然至少在WindowsXP和Windows7中运行良好(可能是Win95和Win98,我需要更深入地回顾代码历史以找出引入此接口(interface)的时间),但在Windows10中程序崩溃在FreeLibrary()调用此DLL期间。在调试器中检查时,DLL_DETACH_PROCESS似乎已成功处理(处理该消息时未执行任何代码)。崩溃发生

windows - *** 错误 : Symbol file could not be found. 默认为 ntkrnlmp.exe 导出符号

你好Stackoverflow社区,我正在尝试在Windows10上调试应用程序并要求Windows调试器框架加载符号以在(Windows内核调试器)kd中运行某些命令。每次我通过键入kd-kl在命令提示符下加载内核调试器(kd)(注意:您需要启用bcdedit-debug才能工作),我得到以下堆栈跟踪:Microsoft(R)WindowsDebuggerVersion10.0.14321.1024AMD64Copyright(c)MicrosoftCorporation.Allrightsreserved.ConnectedtoWindows1010240x64targetat(T