问题标签 [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.
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 过去已证明在检测和指出这些问题方面相当可靠。(并不是说我确定它在后台进行的巫术诊断)。
windows - WinDbg Dr. Watson minidump - 需要最初为已安装版本构建的 pdb/dll?
我有一个来自目标应用程序崩溃的 mindmp 文件。我是否可以为某个软件版本重建 dll/pdb 文件并正确加载 windbg 符号?
我的问题是我们的 pdb 文件只保留在主要版本中(不幸的是)。这是一个每日构建,我可以自己重建,但我被错误绊倒了。
使用 !sym 嘈杂:“图像标题与内存图像标题不匹配。”
注意我已经用 dll 构建了 pdb,它们来自同一个 RELEASE 目录(我应该构建调试吗?)
这些是发布版本(因为发布版本安装在目标上并崩溃)我是否应该以某种方式使用调试构建 dll 来获取更多符号信息?
debugging - 开始学习Windbg
在被一个我根本不具备调试知识的问题困扰之后,我决定必须学习如何使用 Windbg。我唯一的问题:我不知道从哪里开始 :-( 我不是真正的 WinApi-Guy,我使用的语言通常会从我身上抽象出 Windows Api。
所以我只是想知道:对于了解编程但对 Windows 内部深度了解不多的人来说,学习 Windbg 的最佳来源(书籍、网站)是什么?(是的,我确实每天都在阅读 oldnewthing :))
c++ - 在 Windbg 中调试 C++ STL 容器
Windbg 粉丝声称它非常强大,我倾向于同意。但是在调试 STL 容器时,我总是卡住。如果变量在堆栈上,!stl
扩展有时会计算出来,但是当具有复杂类型(例如std::vector<TemplateField, std::allocator<TemplateField> >
)的容器在堆上或其他结构的一部分时,我只是不知道如何查看其内容。
欣赏任何提示,指针。
c++ - Windbg:如何在 C++ 函数的重载之一上设置断点?
我有两个 C++ 函数重载,我想在其中一个上设置断点:
哎呀,我可以在所有重载上设置断点,但似乎无法弄清楚如何:
debugging - 使用 WinDbg,我可以在进程运行时修改内存中的项目吗?
我可以使用在地图文件中找到的地址,在应用程序运行时使用 windbg 更改内存中的变量吗?
我真的很感兴趣在运行时打开/关闭功能,也许是一个变量。
你会怎么做?它是否需要通过调试器破坏应用程序?
c# - WinDbg 不间断地向控制台输出字符
我正在开发一个 POS 应用程序,目前在大约 200 个位置使用 .Net 2.0、WCF 和 SyncFusion 组件作为 GUI。
两天前,我们在一个新位置安装了该应用程序,并且该应用程序一直在遭受突然终止。
该应用程序有一个事件和异常的运行日志,所以如果它发生了什么事,日志中总会有一些东西。在这种情况下,日志被简单地切断。我们在其他地方也遇到过类似的情况,但它们非常罕见,而且发生的次数不超过一两次,因此我们无法捕获调试转储。
该位置的计算机的硬件设置略有不同,包括 LPT 输出上的分离器,用于打印到 POS 打印机和在视频监视器上显示输出。
不过,在这个位置,它大约每 1.5 小时发生一次。我尝试打开 WinDbg 并附加到进程,但奇怪的是,在有调试输出的区域,我看到了我的应用程序生成的跟踪消息,但还有一个不间断的字符流,具体来说,“ b0" 重复。
我的问题是我不明白那个“b0”是从哪里来的,它是什么意思。我怀疑它可能是分离器,但我要到星期天才能测试它。
希望有人会知道如何解决这个问题。
asp.net - 如何调试尖峰 ASP.NET 进程的内存转储?
抱歉,我想不出一个很好的方式来表达我的真正问题。
我在 64 位机器上运行一个高流量的 ASP.NET 站点。但是,由于应用程序的一些遗留组件,我有 IIS 在 32 位模式下运行。我正在一个应用程序池中运行这个特定的 Web 应用程序,该应用程序池启用了 Web Garden 选项(在 8 核机器内运行 6 个进程)。
每周一到两次,其中一个进程将飙升至 100% 的 CPU 利用率,从而导致站点的速度大幅下降,所以我的计划是等到这种情况发生,内存转储有问题的进程,然后在 WinDbg 周围戳到零用于查看代码在哪里旋转的线程。
我之前使用 WinDbg 进行过调试,以找出导致网站死锁的原因,但那是几个月前的事了,我不记得我是如何让它工作的。(作为旁注,这是记录您所做的一切的课程。)
我在运行该站点的 Windows 2003 服务器上运行 WinDbg,以防止任何 DLL 版本问题。到目前为止,这是我的步骤,请让我知道我哪里出错了,以获取我收到的错误消息。
我首先使用 UserDump 使用以下命令对尖峰进程进行内存转储,其中 3389 是进程的 ID:
userdump -k 3389
我将转储加载到 WinDbg 的 x86 版本中。
由于我在 64 位机器上运行 32 位,我首先加载内存转储,然后:
.load wow64exts
.effmach x86
我确保我的符号路径包含包含我的应用程序 PDB 文件的目录:
.sympath+ c:\inetpub\myapp\bin
仅运行 `.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
”。但事实并非如此。
windows - 如何中止 WinDbg 中的长时间操作?
通常 WinDbg 会进入 *Busy*执行操作的状态。
这通常是由于我在尝试dt some_variable_itll_never_find时犯的一些错误,或者在没有符号的地方设置断点,或者我在这个工具上犯的 1000 个其他错误。
有没有办法取消当前操作?