问题标签 [dbghelp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 捕获 R6025 纯虚拟呼叫
我目前使用捕获未处理异常的 MiniDumps,SetUnhandledExceptionFilter
但有时我会收到“R6025:纯虚函数”。
我了解纯虚函数调用是如何发生的,我只是想知道是否可以捕获它们,以便我可以在那时创建一个 MiniDump。
.net - .NET PDB 文件的格式(架构)是什么?
.NET PDB 文件的格式(架构)是什么?我想从这些文件中解析出信息,以便在调试应用程序中显示正确的代码行(行号)。
c++ - 在哪里可以找到 Windows 进程中已卸载模块的列表?
我有一些本地(如/SUBSYSTEM:NATIVE
)Windows 程序,我想生成小型转储,以防它们崩溃。通常,我会使用dbghelp.dll
,但由于本机进程只能使用从 导出的函数ntdll.dll
,所以我不能。
所以我自己实现了转储程序。它几乎完成了,但不幸的是,我无法在崩溃的进程中找到卸载模块的列表(该列表肯定存储在某个地方,因为 WinDbg 能够显示它)。
在哪里可以找到 Windows 进程中已卸载模块的列表?
编辑:该列表肯定存储在进程内存中的某个位置,即使我在卸载模块后附加它,WinDbg 也可以显示该列表。WinDbg 的文档中还有一条注释:
Microsoft Windows Server 2003 和更高版本的 Windows 维护用户模式进程的卸载模块列表。[...]
debugging - 为什么 Minidumps 不提供良好的调用堆栈?
多年来,我在许多游戏项目中使用了 minidump,它们似乎有大约 50% 的机会拥有有效的调用堆栈。我能做些什么来让他们有更好的调用堆栈?
我尝试将最新的 dbghelp.dll 放在 exe 目录中。这似乎对一些人有所帮助。
Visual Studio 2008 或 2010 更好吗?(我仍在使用 VS 2005)。
我使用的代码看起来像这个示例。
c++ - DbgHelp.dll 是 Windows 内置的吗?我可以依靠它在那里吗?
我使用来自 CodeProject 的 Jochen Kalmbach 的 StackWalker 类,当我的 DLL 中发生异常时生成堆栈跟踪。
它依赖于 DbgHelp.dll
DbgHelp.dll 是否内置在 Windows Vista、WS2008、Windows 7 中?
我知道Microsoft的 Windows 调试工具,并且我知道 DbgHelp.dll 包含在该软件包中。但我还在我的机器上的 %windir%\system32 中找到了 DbgHelp.dll。
如果默认情况下没有安装它,我有没有办法用我的 DLL 的调试版本重新分发它?
windows - 如何使用 dbghlp 和 pdb 获取结构的字段名称和偏移量
我想以与 windbg 的 dt 命令相同的方式转储结构的字段和偏移量。例如,假设我想转储 Microsoft Public 符号中的 _PEB 结构(因为 windbg 的 DT 命令有效)。
从 MSDN 文档中,我了解到 SymFromName 函数应该能够做到这一点,下面是我尝试过的代码,它在 SymFromName 上失败,LastError 126(找不到指定的模块)。从注册的回调中,我得到以下输出:
编码:
c++ - Pdb 文件是否包含公共函数的参数名称?
我需要查找公共方法的函数参数名称。类型很容易从 PDB 符号和 DIA 符号中获得,但是有什么方法可以让我们也可以跟踪和提取函数参数名称吗?
我关心本机 pdb 符号。
c++ - 需要获取 C++ 内核类型列表?
尊敬!!
我需要完整的内核类型列表,例如“CRITICAL_SECTION”、“_LARGE_INTEGER”或“_SECURITY_ATTRIBUTES”。基本上,我从一些调试 SDK(现在使用 DIA SDK 或 DbgHelp)中提取给定类名的类的所有数据成员作为类型。
现在,如果一个类型(比如类或结构)包含我上面提到的一些内核级对象,它也会提取(该类型的详细信息,例如数据成员及其类型)这些类型。
我需要阻止提取内核级对象和类型。只有我需要那些用户定义的类型,并且那些只包含具有本地类型的数据成员,这些类型又是一些用户定义的类型(如 int、float、double、char、std::string 或可以是 SomeUDT obj)。
有没有其他的出路……?
问候乌斯曼
c++ - DBGHelp.dll 导致在调试版本中加载 msvcrt.dll
我的应用程序使用 VC6 sp6 编译,使用 DBGHelp.lib 获取堆栈信息。该代码在调试和发布编译中是相似的。问题是在执行调试版本时,DBGHelp.dll 会加载 msvcrt.dll(发布版本)。无论如何,我的调试链接已经加载了 msvcrtd.dll。所以我最终在调试版本的过程中同时拥有 msvcrtd.dll 和 msvcrt.dll。dsp设置为加载默认库,根本没有直接提到msvcrt(d).lib。如果我取出使用 DBGHelp.dll 的代码并从 dsp 链接列表中删除 DBGHelp.lib,则不会加载 msvcrt.dll。
我该如何解决?
我只需要在我的调试执行中使用 msvcrtd.dll。
是否有用于调试的特殊版本的 DBGHelp.dll(将使用 msvcrtd.dll)?