与崩溃转储相比,WinDbg在附加到进程时显示不同的调用堆栈

我正在分析与托pipe代码一起使用本机库时发生的死锁。 我正在使用WinDbg来debugging问题,以便保存转储,以便供应商可以在其处所观察问题。

当附加到有问题的过程时,我会在任何调用堆栈之前看到以下消息:

警告:堆栈展开信息不可用。 以下框架可能是错误的。

直接连接到stream程时,框架实际上看起来是正确的。 但是,当我转储此文件,然后在另一台机器上的WinDbg中打开转储时,其中一个堆栈帧是不同的(上面的错误也会显示出来)。原本这个供应商难倒了,因为代码path似乎不可行。

replace当前Windows用户与另一个用户运行EXE

检测附加的分析器

防止事件C#冒泡

ShowDialog返回types:窗体与窗口

如何获得图像中的多数颜色?

我拿着转储使用:

.dump /ma filename.dmp

什么会导致这种差异,有什么我可以做的,可靠地分析转储文件调用堆栈? 可能还有我应该注意的任何其他歪曲的数据?

“永远在上面”的对面

Windows文件系统统计更新频率

如何将HTML和文本都复制到剪贴板?

DirectXinput是游戏中键盘处理的正确select吗?

Windows应用程序图标文件

这听起来像你可能有不匹配的pdbs。 你尝试过!chksym和!itoldyouso命令吗? 例如见Bugslayer文章

一个要尝试的是!sym noisy ,应该告诉你哪些pdb文件正在被加载。

另请参阅MSDN博客

该警告告诉您,调试器无法将堆栈中的一个或多个地址与现有的模块信息相关联。 由于托管代码是由CLR实时编译的,因此没有相应的代码模块,因此也没有警告。

SOS命令!clrstack从CLR中获得必要的信息来显示一个有意义的堆栈(或者至少没有警告)。 如果您使用任何本机堆栈转储命令,您将看到托管代码的此警告。

即将出版的“高级.NET调试”一书还有其他细节。 请参阅http://advanceddotnetdebugging.com/

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....