gpt4 book ai didi

c++ - 在不调用应用程序/主机 Exe 源代码的情况下调试 Visual C++ DLL

转载 作者:行者123 更新时间:2023-11-30 03:59:52 28 4
gpt4 key购买 nike

客户端向我们发送了一个故障转储,其中包含我们的 dll 汇编指令的十六进制地址。我如何将其与 Visual Studio 上的 C++ 代码联系起来?

我们的程序打包在一个 dll 中,然后由远程服务器上的主机应用程序加载。我们有我们的 dll 的源代码,但没有主机应用程序。调试由 dll 引起的崩溃的最佳方法是什么?

crash : #214 0001BD54 EIP: 6BAA7271 ESP: 240DF640 
6BAA7271:000000 [6BAA7271] unknown (ourcompany.dll)
6BA9FA31:000000 [6BA9FA31] unknown (ourcompany.dll)
6BA994D9:000000 [6BA994D9] unknown (ourcompany.dll)
6BA9F5F2:000000 [6BA9F5F2] unknown (ourcompany.dll)
6BAADB36:000000 [6BAADB36] unknown (ourcompany.dll)
6BAADBB4:000000 [6BAADBB4] unknown (ourcompany.dll)
76EC3378:000012 [76EC338A] AcquireSRWLockExclusive
(kernel32.dll)
775D9F0F:000063 [775D9F72] RtlInsertElementGenericTableAvl
(ntdll.dll)
775D9F0F:000036 [775D9F45] RtlInsertElementGenericTableAvl
(ntdll.dll)

crash --> 6BAA7271 80780F00 cmp byte [eax+0xf], 0x0
6BAA7275 74EB jz 0x6baa7262

6BAA7277 8B8310040000 mov eax, [ebx+0x410]
6BAA727D 89BD24FDFFFF mov [ebp+0xfffffd24], edi
6BAA7283 3BF8 cmp edi, eax
6BAA7285 740E jz 0x6baa7295

6BAA7287 663B770C cmp si, [edi+0xc]

: #215 000167B0 EIP: 752178D7 ESP: 37F3FC00
7521787B:00005C [752178D7] DlgDirSelectComboBoxExW
(user32.dll)
62AD0013:000000 [62AD0013] unknown (***.dll)
76EC3378:000012 [76EC338A] AcquireSRWLockExclusive
(kernel32.dll)
775D9F0F:000063 [775D9F72] RtlInsertElementGenericTableAvl
(ntdll.dll)
775D9F0F:000036 [775D9F45] RtlInsertElementGenericTableAvl
(ntdll.dll)

最佳答案

使用与您的客户端完全相同的二进制文件开始调试。然后在模块窗口中检查你的 dll 的基地址,然后从故障转储中添加偏移量。在反汇编窗口(调试 -> 窗口 -> 反汇编)中,您在地址:编辑框中输入您计算出的十六进制格式 0xXXXXXXXX 的崩溃地址。这应该会显示您感兴趣的源代码行。

问题是如何计算崩溃偏移量,你应该在你的崩溃日志模块部分有你的 dll 加载地址,这应该足以计算崩溃偏移量。这应该是 0x6BAA7271 - [dll base offset]。

我不使用 dll-s,但这应该可以。

此外,如果您在产品发布时在源代码控制中进行了标记,则调试此类问题会更​​容易。然后你检查这个标签的分支,这允许你生成 pdb-s 并用程序做实验。

关于c++ - 在不调用应用程序/主机 Exe 源代码的情况下调试 Visual C++ DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26725039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com