问题标签 [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.

0 投票
3 回答
8992 浏览

c++ - 捕获 R6025 纯虚拟呼叫

我目前使用捕获未处理异常的 MiniDumps,SetUnhandledExceptionFilter但有时我会收到“R6025:纯虚函数”。

我了解纯虚函数调用是如何发生的,我只是想知道是否可以捕获它们,以便我可以在那时创建一个 MiniDump。

0 投票
3 回答
13391 浏览

c++ - 如何在不使用 dbghelp.dll 的情况下在 Windows 上获取堆栈跟踪?

如何在不使用 dbghelp.dll 的情况下获取 Windows 上的地址堆栈跟踪?

我不需要知道与地址关联的符号或函数名称,我只需要地址列表——类似于*nix 系统的回溯

谢谢!

0 投票
3 回答
2337 浏览

.net - .NET PDB 文件的格式(架构)是什么?

.NET PDB 文件的格式(架构)是什么?我想从这些文件中解析出信息,以便在调试应用程序中显示正确的代码行(行号)。

0 投票
4 回答
1947 浏览

c++ - 在哪里可以找到 Windows 进程中已卸载模块的列表?

我有一些本地(如/SUBSYSTEM:NATIVE)Windows 程序,我想生成小型转储,以防它们崩溃。通常,我会使用dbghelp.dll,但由于本机进程只能使用从 导出的函数ntdll.dll,所以我不能。

所以我自己实现了转储程序。它几乎完成了,但不幸的是,我无法在崩溃的进程中找到卸载模块的列表(该列表肯定存储在某个地方,因为 WinDbg 能够显示它)。

在哪里可以找到 Windows 进程中已卸载模块的列表?

编辑:该列表肯定存储在进程内存中的某个位置,即使我在卸载模块后附加它,WinDbg 也可以显示该列表。WinDbg 的文档中还有一条注释:

Microsoft Windows Server 2003 和更高版本的 Windows 维护用户模式进程的卸载模块列表。[...]

0 投票
5 回答
8683 浏览

debugging - 为什么 Minidumps 不提供良好的调用堆栈?

多年来,我在许多游戏项目中使用了 minidump,它们似乎有大约 50% 的机会拥有有效的调用堆栈。我能做些什么来让他们有更好的调用堆栈?

我尝试将最新的 dbghelp.dll 放在 exe 目录中。这似乎对一些人有所帮助。

Visual Studio 2008 或 2010 更好吗?(我仍在使用 VS 2005)。

我使用的代码看起来像这个示例

0 投票
2 回答
3785 浏览

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 的调试版本重新分发它?

0 投票
2 回答
2996 浏览

windows - 如何使用 dbghlp 和 pdb 获取结构的字段名称和偏移量

我想以与 windbg 的 dt 命令相同的方式转储结构的字段和偏移量。例如,假设我想转储 Microsoft Public 符号中的 _PEB 结构(因为 windbg 的 DT 命令有效)。

从 MSDN 文档中,我了解到 SymFromName 函数应该能够做到这一点,下面是我尝试过的代码,它在 SymFromName 上失败,LastError 126(找不到指定的模块)。从注册的回调中,我得到以下输出:

编码:

0 投票
1 回答
734 浏览

c++ - Pdb 文件是否包含公共函数的参数名称?

我需要查找公共方法的函数参数名称。类型很容易从 PDB 符号和 DIA 符号中获得,但是有什么方法可以让我们也可以跟踪和提取函数参数名称吗?

我关心本机 pdb 符号。

0 投票
1 回答
246 浏览

c++ - 需要获取 C++ 内核类型列表?

尊敬!!

我需要完整的内核类型列表,例如“CRITICAL_SECTION”、“_LARGE_INTEGER”或“_SECURITY_ATTRIBUTES”。基本上,我从一些调试 SDK(现在使用 DIA SDK 或 DbgHelp)中提取给定类名的类的所有数据成员作为类型。

现在,如果一个类型(比如类或结构)包含我上面提到的一些内核级对象,它也会提取(该类型的详细信息,例如数据成员及其类型)这些类型。

我需要阻止提取内核级对象和类型。只有我需要那些用户定义的类型,并且那些只包含具有本地类型的数据成员,这些类型又是一些用户定义的类型(如 int、float、double、char、std::string 或可以是 SomeUDT obj)。

有没有其他的出路……?

问候乌斯曼

0 投票
1 回答
549 浏览

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)?