问题标签 [windbg]

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 投票
2 回答
3763 浏览

windows - PDB 文件故障转储 user.dmp

我有一个应用程序崩溃,因此它在 Windows 平台中生成一个崩溃转储。我将 exe 和 dll 文件发送给客户。客户已将 user.dmp 和 drwtsn32.log 文件发送给我。但是,客户没有相应的 pdb 文件。客户只有 dll 和 exe 文件。因此,当我将此 user.dmp 文件附加到 Windbg 时,我没有得到符号。那么,我需要做什么才能获得符号。我需要将 pdb 文件发送给客户吗?如果是,那么当崩溃发生时他需要对这些 pdb 文件做什么?我使用三种不同的机器:a)构建机器,c)客户的测试机器和 c)我自己的调试机器(与构建机器不同)。windbg安装在调试机上。我可以将所有 pdb 文件从构建机器复制到我的调试机器中。请告诉我,

谢谢康康

0 投票
1 回答
1867 浏览

windows - 在 Windbg 脚本中分配数据的最简单方法是什么?

我有一个我计划分配通过断点运行的 windbg 脚本。在这个脚本中,我想使用 .foreach 对命令进行标记,但我希望能够分配一个变量来记住有关当前标记的内容,以便下次在 for 循环周围。

例如,像这样的东西(用伪 windbg-script-code 编写):

我不知道如何分配像 $thistokenisinteresting 这样的变量。我使用寄存器吗?这不会搞砸我的调试吗?

0 投票
4 回答
71956 浏览

c++ - 如何使用 WinDbg 分析 VC++ 应用程序的故障转储?

如何使用WinDbg分析转储文件?

0 投票
4 回答
20095 浏览

windows - 如何更改年龄不匹配的 PDB 以正确匹配?

我们的夜间构建过程被破坏了很长时间,以至于它生成的 PDB 文件与相应的图像文件的年龄相差几个小时。我已经解决了这个问题。

但是,我想开始使用符号服务器,但由于必须使用这些年龄不匹配的 pdb 文件而不能。我通过在 windbg 中使用 .symopt +0x40 方法解决了这个问题。这意味着我必须手动组织我所有的 pdb 文件,并且经过多年的发布,这些文件加起来。

我正在寻找一种方法来修改 windbg 用来标记 pdb 年龄的机制,并强制它与我的图像文件匹配。实用程序ChkMatch执行类似的操作,但用于 pdb 签名。开发人员在页面“ChkMatch 能够使可执行文件和 PDB 文件匹配,如果它们具有不同的签名但相同的年龄(有关 PDB 签名和年龄的更多信息,请参阅本文)。如果年龄不同,该工具无法使文件匹配。”

我查看了 hexeditor 内部,甚至找到了与年龄相对应的位,但它必须在内部提取更多技巧,因为我无法让它工作。

有任何想法吗?

编辑:我不知道这是否有帮助,但在我的特殊情况下,年龄差异是由不必要的重新链接 dll 引起的,这也会重新创建 PDB 文件。但是,我们的构建过程是存储原始 dll(重新链接之前)和重新链接之后的 pdb。我想过以某种方式手动重现这种情况。意思是,强制重新链接 DLL,但在两种情况下都保存 pdb。然后我可以对这两个文件进行二进制比较,看看它们是如何变化的。也许运行某种自动执行此操作的修补软件?通过查看我的控制案例中究竟发生了什么变化,也许我可以对保存在我公司构建过程中的 DLL 和 PDB 做同样的事情?

编辑:我想通了!!!!感谢对第一个答案的评论之一,我查看了“未记录的 Windows 2000 秘密:程序员食谱”一书的 pdf 链接。作者详细介绍了 pdb 文件格式。正如我之前所说,我已经将 pdb 加载到十六进制编辑器中并翻转了一些位,似乎我进行了年龄/签名匹配,但它不起作用。好吧,在使用 W2k 机密书中的实用程序将 pdb“爆炸”到包含的流中之后,我发现它们在流 3 中隐藏了另一个对年龄的引用!!!!!!!!!!一旦我也翻转了那个,它就在windbg中匹配了。这是巨大的!!!!非常感谢....符号服务器我来了!

0 投票
2 回答
10653 浏览

c++ - 使用 WinDbg 的变量值

问题:

如何使用 WinDbg显示C++迭代器的,如下图所示:

笔记:

使用?? 评估 C++ 表达式命令,它显示以下内容:

  • 另一个命令是否可以显示/打印的值*i- 如果我错了,请纠正我
0 投票
1 回答
539 浏览

c++ - 使用 WinDbg 进行调试时如何检查字符串中是否存在 NULL 字符

例如:

问题:

  • 如何在上面检查以NULL 结尾的字符
0 投票
1 回答
11073 浏览

c# - 了解 WinDbg 输出

我有一个 Winform 应用程序 (C#),它从 dll 导入一些函数。

有时在运行应用程序时,我会遇到以下异常:

System.AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。

我抓住它AppDomain.CurrentDomain.UnhandledException

所以我尝试用 WinDbg 调试它。我能够捕获异常并获得以下输出:

!分析-v


这意味着什么?我该怎么办?

提前感谢您的任何提示!

0 投票
3 回答
2651 浏览

c++ - WinDbg 中 wchar_t 和 char 的表示

笔记:

WinDbg:

问题:

  • NULL字符的用途是什么:00wchar_t- Win32中的 ASCII 字符之间?
0 投票
6 回答
3818 浏览

c# - 实时调试堆栈溢出

我有一个托管代码 Windows 服务应用程序,由于托管 StackOverFlowException,它在生产中偶尔会崩溃。我知道这一点是因为我在崩溃模式下运行了 adplus 并使用 SoS 分析了崩溃转储事后分析。我什至附加了 windbg 调试器并将其设置为“未处理的异常”。

我的问题是,我看不到任何托管堆栈或切换到任何线程。当调试器中断时,它们都被拆除了。

我不是 Windbg 专家,并且没有在实时系统上安装 Visual Studio 或使用该工具进行远程调试和调试,是否有人对我如何从有问题的线程中获取堆栈跟踪有任何建议?

这就是我正在做的事情。

!线程

...

XXXX 11 27c 000000001b2175f0 b220 已禁用 00000000072c9058:00000000072cad80 0000000019bdd3f0 0 Ukn System.StackOverflowException (0000000000c010d0)

...

此时你会看到 XXXX ID 表明线程已经死了。

0 投票
1 回答
3245 浏览

garbage-collection - 使用windbg/sos时强制GC

可能重复:
我可以从 WinDbg 运行 .NET 垃圾收集吗?

我正在使用 windbg/sos 调试内存泄漏,但我找不到让 sos 强制进行垃圾收集的方法。sos 命令列表似乎不包括 gc。