问题标签 [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 投票
3 回答
1075 浏览

debugging - ACCESS_VIOLATION_BAD_IP

我试图找出我的应用程序中的崩溃。WinDbg 告诉我以下内容:(使用破折号代替下划线)


LAST-CONTROL-TRANSFER:从 005f5c7e 到 6e697474
DEFAULT-BUCKET-ID:BAD_IP
BUGCHECK-STR:ACCESS-VIOLATION

对我来说很明显 6e697474 不是一个有效的地址。

我有三个问题:
1)“BAD_IP”存储桶 ID 是否意味着“错误指令指针”?
2) 这是一个多线程应用程序,因此一个考虑因素是我试图调用其函数的对象超出范围。有谁知道这是否会导致相同的错误消息?
3)还有什么可能导致这样的错误?我的一位同事建议这可能是堆栈溢出问题,但 WinDBG 过去已证明在检测和指出这些问题方面相当可靠。(并不是说我确定它在后台进行的巫术诊断)。

0 投票
5 回答
7746 浏览

windows - WinDbg Dr. Watson minidump - 需要最初为已安装版本构建的 pdb/dll?

我有一个来自目标应用程序崩溃的 mindmp 文件。我是否可以为某个软件版本重建 dll/pdb 文件并正确加载 windbg 符号?

我的问题是我们的 pdb 文件只保留在主要版本中(不幸的是)。这是一个每日构建,我可以自己重建,但我被错误绊倒了。

使用 !sym 嘈杂:“图像标题与内存图像标题不匹配。”

注意我已经用 dll 构建了 pdb,它们来自同一个 RELEASE 目录(我应该构建调试吗?)

这些是发布版本(因为发布版本安装在目标上并崩溃)我是否应该以某种方式使用调试构建 dll 来获取更多符号信息?

0 投票
6 回答
10184 浏览

debugging - 开始学习Windbg

在被一个我根本不具备调试知识的问题困扰之后,我决定必须学习如何使用 Windbg。我唯一的问题:我不知道从哪里开始 :-( 我不是真正的 WinApi-Guy,我使用的语言通常会从我身上抽象出 Windows Api。

所以我只是想知道:对于了解编程但对 Windows 内部深度了解不多的人来说,学习 Windbg 的最佳来源(书籍、网站)是什么?(是的,我确实每天都在阅读 oldnewthing :))

0 投票
6 回答
6750 浏览

c++ - 在 Windbg 中调试 C++ STL 容器

Windbg 粉丝声称它非常强大,我倾向于同意。但是在调试 STL 容器时,我总是卡住。如果变量在堆栈上,!stl扩展有时会计算出来,但是当具有复杂类型(例如std::vector<TemplateField, std::allocator<TemplateField> >)的容器在堆上或其他结构的一部分时,我只是不知道如何查看其内容。

欣赏任何提示,指针。

0 投票
5 回答
12331 浏览

c++ - Windbg:如何在 C++ 函数的重载之一上设置断点?

我有两个 C++ 函数重载,我想在其中一个上设置断点:

哎呀,我可以在所有重载上设置断点,但似乎无法弄清楚如何:

0 投票
5 回答
4788 浏览

debugging - 使用 WinDbg,我可以在进程运行时修改内存中的项目吗?

我可以使用在地图文件中找到的地址,在应用程序运行时使用 windbg 更改内存中的变量吗?

我真的很感兴趣在运行时打开/关闭功能,也许是一个变量。

你会怎么做?它是否需要通过调试器破坏应用程序?

0 投票
1 回答
336 浏览

c# - WinDbg 不间断地向控制台输出字符

我正在开发一个 POS 应用程序,目前在大约 200 个位置使用 .Net 2.0、WCF 和 SyncFusion 组件作为 GUI。

两天前,我们在一个新位置安装了该应用程序,并且该应用程序一直在遭受突然终止。

该应用程序有一个事件和异常的运行日志,所以如果它发生了什么事,日志中总会有一些东西。在这种情况下,日志被简单地切断。我们在其他地方也遇到过类似的情况,但它们非常罕见,而且发生的次数不超过一两次,因此我们无法捕获调试转储。

该位置的计算机的硬件设置略有不同,包括 LPT 输出上的分离器,用于打印到 POS 打印机和在视频监视器上显示输出。

不过,在这个位置,它大约每 1.5 小时发生一次。我尝试打开 WinDbg 并附加到进程,但奇怪的是,在有调试输出的区域,我看到了我的应用程序生成的跟踪消息,但还有一个不间断的字符流,具体来说,“ b0" 重复。

我的问题是我不明白那个“b0”是从哪里来的,它是什么意思。我怀疑它可能是分离器,但我要到星期天才能测试它。

希望有人会知道如何解决这个问题。

0 投票
5 回答
4804 浏览

asp.net - 如何调试尖峰 ASP.NET 进程的内存转储?

抱歉,我想不出一个很好的方式来表达我的真正问题。

我在 64 位机器上运行一个高流量的 ASP.NET 站点。但是,由于应用程序的一些遗留组件,我有 IIS 在 32 位模式下运行。我正在一个应用程序池中运行这个特定的 Web 应用程序,该应用程序池启用了 Web Garden 选项(在 8 核机器内运行 6 个进程)。

每周一到两次,其中一个进程将飙升至 100% 的 CPU 利用率,从而导致站点的速度大幅下降,所以我的计划是等到这种情况发生,内存转储有问题的进程,然后在 WinDbg 周围戳到零用于查看代码在哪里旋转的线程。

我之前使用 WinDbg 进行过调试,以找出导致网站死锁的原因,但那是几个月前的事了,我不记得我是如何让它工作的。(作为旁注,这是记录您所做的一切的课程。)

我在运行该站点的 Windows 2003 服务器上运行 WinDbg,以防止任何 DLL 版本问题。到目前为止,这是我的步骤,请让我知道我哪里出错了,以获取我收到的错误消息。

  1. 我首先使用 UserDump 使用以下命令对尖峰进程进行内存转储,其中 3389 是进程的 ID:

    userdump -k 3389

  2. 我将转储加载到 WinDbg 的 x86 版本中。

  3. 由于我在 64 位机器上运行 32 位,我首先加载内存转储,然后:

    .load wow64exts

    .effmach x86

  4. 我确保我的符号路径包含包含我的应用程序 PDB 文件的目录:

    .sympath+ c:\inetpub\myapp\bin

  5. 仅运行 `.load SOS' 失败,并出现“系统找不到指定的文件”错误,所以我采用以下完全合格的路线,该路线有效:

    .load c:\windows\microsoft.net\framework\v2.0.50727\sos

从这里开始,我迷路了。我尝试了任何 SOS 命令,例如!threads,只是为了得到这个错误:

该错误还伴随着我应该验证的项目编号列表。我已经验证我正在运行最新版本的调试器,mscordacwks.dll 实际上与 mscorwks.dll 文件位于同一目录中,并且我在与转储文件相同的架构上进行调试。

我也运行了神奇的“ .cordll -ve -u -l”命令,但这并不能解决任何问题。CLR DLL status: No load attempts当我执行那个时,我总是用“”打招呼。然后我尝试“ .reload”,它会产生一些像“ WARNING: wldap32 overlaps dnsapi”这样的警告。我希望它说类似“ CLRDLL: Loaded DLL C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dll”。但事实并非如此。

0 投票
3 回答
296 浏览

visual-studio - WinDbg 缺少哪些 Visual Studio 调试器功能?

有吗?

0 投票
4 回答
26903 浏览

windows - 如何中止 WinDbg 中的长时间操作?

通常 WinDbg 会进入 *Busy*执行操作的状态。

这通常是由于我在尝试dt some_variable_itll_never_find时犯的一些错误,或者在没有符号的地方设置断点,或者我在这个工具上犯的 1000 个其他错误。

有没有办法取消当前操作?