调试帮助库允许从外部存储加载符号。 您只需调用SymSetSearchPath ,指定符号服务器,然后SymLoadModuleExW从指定位置加载符号。 下载符号可能需要一些时间,我目前正在寻找一种取消下载符号的方法。 但突然间我找不到任何 API 了。 有没有办法取消下载符号? ...
调试帮助库允许从外部存储加载符号。 您只需调用SymSetSearchPath ,指定符号服务器,然后SymLoadModuleExW从指定位置加载符号。 下载符号可能需要一些时间,我目前正在寻找一种取消下载符号的方法。 但突然间我找不到任何 API 了。 有没有办法取消下载符号? ...
托管调用堆栈和本机调用堆栈有什么区别,为什么 dbghelp 无法从托管调用堆栈中解析符号? 谁能告诉我基本原因? ...
我的项目包含托管部分( dotnet )和本机( C++ )部分。 我想通过绕道和记录调用堆栈在我的项目中挂钩 Winapi CreateFiles 。 现在我通过在dbghelp中调用CaptureStackBackTrace和SymFromAddr api 获得了本机调用堆栈。 但是在dotne ...
首先,我想挂钩CreateFile()并重写它。 然后我想重新编码我的新CreateFile() function 的调用堆栈。但是当我使用SymInitialize()来初始化句柄时,它陷入了无限循环。 通过我的调试,原因是SymInitialize()调用了CreateFile() 。 那么为 ...
TLDR :有人可以解释如何正确使用SymGetTypeInfo 。 我的目标是获取局部变量的类型信息(无论Rip / Eip碰巧在哪里)。 根据文档,我需要使用填充了适当值的IMAGEHLP_STACK_FRAME结构来调用SymSetContext 。 我在调用SymEnumSymbols时 ...
在编写 C++ Windows 应用程序时,我使用SymInitializeW来初始化符号以获取回溯。 正如文档中提到的,我正在检查返回代码,然后在 SymInitializeW 返回 false 时使用GetLastError 和 FormatMessage (如示例中所示)。 但是,当我这样做 ...
为了正确调试客户发送给我的故障转储文件,我需要保存多少原始版本? 显然我需要 PDB 我还需要其他东西吗? (这将用于由来自 dbghelp.dll 的MiniDumpWriteDump function 编写的故障转储文件。) 到目前为止,我一直保存整个构建文件夹。 代码、PDB、.OBJ 文 ...
如果堆分配/解除分配/重新分配正在另一个线程中进行,则 DbgHelp 库的 MiniDumpWriteDump() 会挂起。 这是调用堆栈: DbgHelp 暂停其他线程,然后无限期地等待这些线程获得的互斥体。 您知道这种情况的简单解决方法吗? 我可以看到将检查注入到我的应用程序中的所有其他线程的 ...
SymEnumSymbolsEx()的文档内容如下: 什么是“内嵌符号”? SymFromInlineContext和其他内联过程做什么? ...
SymInitialize返回0 GetLastError返回-1073741813 我做错了,用C ++编写的相同代码也很好用。 ...
我正在尝试使用以下代码加载几个符号模块: dwBaseDllSymLocal现在是10000000。 Dbghelp给出以下消息:module1 module1 is already loaded at 10000000 。 当我尝试两次加载同一模块时,也会发生相同的行为。 ...
Windows可执行文件(用Visual Studio用C ++编写)是否可以包含其完整的调试符号? 还是仅在其.pdb文件中包含完整的调试符号集? 有没有一种方法可以配置构建Windows应用程序,以便我们可以在没有.pdb文件的情况下对其进行调试? ...
我正在尝试枚举已加载的DLL中的符号。 对于那些感兴趣的人,这是CPPCoverage项目的一部分,对于某些功能,我需要符号数据。 细分问题 当进程启动或加载DLL时,需要为已计划的某些新功能枚举符号。 基本上,创建了一个进程, dbghelp用于获取符号信息。 接下来,使 ...
我的应用程序依赖于 DBGHELP.DLL 函数,尤其是有关目标进程加载的 DLL 的信息。 然而,很多时候它在低于 Vista 的 Windows 版本上失败(你知道 XP 仍然存在!)。 环顾四周,发现目标系统上安装/存在的DBGHELP.DLL是旧的,并且不支持许多新功能(例如,旧版本不支持M ...
我可以通过调用SymGetLineFromAddr64()使用 dbghelp.dll 获取给定地址处的行信息。 它只给我那个地址的源代码信息(例如行号和文件名)。 但是,在 WinDBG 中,我也可以获得给定地址的汇编代码。 我不确定如何使用 dbghelp.dll 做到这一点。 如果不可能,我 ...
在我的 Windows 应用程序中,我使用 MinHook ( https://github.com/TsudaKageyu/minhook ) 连接了 malloc,并且我使用 CaptureStackBacktrace 和 SymFromAddr 来获取内存泄漏的符号。 SymFromAddr ...
SymInitialize和SymFromAddr方法有什么方法可以从自定义符号存储区自动加载符号。 我正在尝试使用SymFromAddr()将地址解析为可读的函数名称。 如果将给定模块的符号存储在本地,这似乎很好用,但是我希望它可以像从WinDbg一样,从提供给SymInitialize的 ...
我需要将dbghelp.lib静态链接到我的VS C ++应用程序,以便从客户计算机上崩溃时获取转储。 我们有一个完全荒谬的要求,即应用程序必须是单个可执行文件,无需安装。 这就是我没有动态链接到dbghelp.dll的原因,因为这将是要包含的另一个文件。 我可以合法地这样做吗? 我 ...
我正在尝试以编程方式生成堆栈跟踪。 当我的用户崩溃时,尤其是随机崩溃时,很难说服他们完成转储的过程,这样我就可以解决问题。 在过去,一旦他们向我发送了跟踪信息,我就会将其中的地址交叉引用到Intermediate / foo.map文件中,以找出问题出在哪里(这是最好的方法吗?) 我从 ...
我正在努力通过Minidump(DbgHelp.h)获取句柄信息。 我从映射文件流中获取MINIDUMP_HANDLE_DESCRIPTOR_2的列表。然后,我通过使用ObjectInfoRva字段为每个描述符获取MINIDUMP_HANDLE_OBJECT_INFORMATION 。 ...