首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Visual Studio2008中为.Net托管应用程序调试来自WinDbg的.dmp文件

在Visual Studio2008中为.Net托管应用程序调试来自WinDbg的.dmp文件
EN

Stack Overflow用户
提问于 2010-11-15 10:34:01
回答 1查看 3.7K关注 0票数 3

我正在尝试了解如何对.Net托管的可执行文件进行崩溃转储,然后在Visual Studio2008中打开生成的.dmp文件。我想知道在源代码中抛出异常的位置、调用堆栈以及堆栈上函数中的变量值。

为了简化这个问题,我编写了一个崩溃的迷你应用程序:

..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Program
{
    static void Main(string[] args)
    {

        int a = 2;           //Variable I want to see value for when debugging

        if (!File.Exists(@"C:\Crasher\bin\Debug\file.txt")) //Doesn't exist
            throw new FileNotFoundException();     //Unhandled exception thrown
    }
}

..。

我做了一个调试构建,并在Visual Studio外部运行它。在windbg中,我点击了“附加到进程”并选择了我的应用。然后我在windbg命令窗口中输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          .dump /ma C:\crasher\bin\debug\dump.dmp

然后,我在Visual Studio中打开了.dmp文件。我转到工具->选项->调试->符号,并添加了以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          http://msdl.microsoft.com/download/symbols  (saved to local folder)

这为我提供了模块窗口中列出的所有all的符号(例如Kernel32.dll、gdi32.dll -我认为列出的所有all都是本机的),但mscorlib.ni.dll除外。微软的Symbol Server为我提供了symbols builds和mscorlib.dll的.pdbs,但没有提供mscorlib.ni.dll。

当我试图加载我的.exe本身的.pdb时,它告诉我它与应用程序不匹配。我认为这是因为.exe是托管的,我们还没有为它下面的所有本机代码提供符号-也就是说,如果我可以为mscorlib.ni.dll获得一个符号构建和pdb,这就可以工作了。

这个推理是正确的吗?我还漏掉了什么吗?

无论哪种方式,为什么mscorlib.ni.dll在Microsoft Symbol Server上不可用,我可以从哪里获得符号信息,以及在Visual Studio中通过崩溃转储调试托管代码还有什么我应该知道的。

非常感谢-任何帮助都将不胜感激。

菲尔·惠廷顿

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-15 18:52:43

正如Jason Evans在他的评论中所说的那样,这在VS2008中是不受支持的,但是您可以在WinDbg中实现。

为这样的崩溃获得正确转储的最简单方法是使用adplus (包含在Windows调试工具中)。有多种选择,但是要获得基于进程名的崩溃转储,您可以这样做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>adplus -crash -o c:\dumpdirectory -pn app.exe

这将为您提供两个转储。一个用于第一次机会异常,另一个用于第二次机会异常。在这种情况下,它们实际上是相同的,但对于更现实的场景,第一次机会异常转储将显示抛出异常时(即在任何异常处理发生之前)应用程序的状态。第二次机会异常转储将显示未处理异常的状态。

要获取异常,请打开崩溃转储并通过键入.loadby sos mscorwks加载SOS。

然后使用!pe命令在当前线程(在本例中将是出错线程)上打印异常。它看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0:000> !pe
Exception object: 024a5114
Exception type: System.IO.FileNotFoundException
Message: Unable to find the specified file.
InnerException: <none>
StackTrace (generated):
    SP       IP       Function
    0020F0F0 005100D6 TestBench!TestBench.Program.Main()+0x66

StackTraceString: <none>
HResult: 80070002

要列出本地变量a,请使用!clrstack -l,但请记住,由于优化,本地变量在发布模式构建中很少可用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0:000> !clrstack -l
OS Thread Id: 0x1a50 (0)
ESP       EIP     
0020f04c 7571b727 [HelperMethodFrame: 0020f04c] 
0020f0f0 005100d6 TestBench.Program.Main()
    LOCALS:
        0x0020f0fc = 0x00000002  <--- the value of a
        0x0020f0f8 = 0x00000000

0020f328 51141b5c [GCFrame: 0020f328] 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4183484

复制
相关文章
WinDbg调试.NET程序入门
俗话说:万事开头难! 自从来到新公司遇到性能问题后,需要想办法解决这个问题,但是一直没有合适的性能分析工具,然后找到StevenChennet 大神帮忙,他用WinDbg工具远程帮我分析了一个 dump文件,但是只看到键盘 “啪啪啪”,得到了结果,却不是很清楚WinDbg神奇具体如何使用的。结果,第二天,性能问题又来了,总不能每次劳烦大神驾到,所以不得不自己开始学习WinDbg,这里记录一个入门过程。 1,首先,下载并安装WinDbg程序 从下面的地址打开: https://msdn.microsoft.c
用户1177503
2018/02/26
1.9K0
windbg加载mex.dll分析.dmp文件
1、参考https://cloud.tencent.com/developer/article/1920951 安装windbg
Windows技术交流
2021/12/30
2.2K0
Windbg调试----Windbg入门
Windbg简单来说就是一个Windows下对用户态/内核态的程序进行调试,以及对Core Dump文件的分析。对于Crash,资源泄露,死锁等问题的分析,Windbg是一个强有力的利器。
河边一枝柳
2021/08/06
2.6K0
Windbg调试----Windbg入门
使用VS2013分析DMP文件
当一个发布的.NET应用程序出现app crash,无法通过日志分析异常原因时,就需要通过分析DMP文件了,传统方式是通过WinDbg来分析DMP文件,但是WinDbg用起来不是很方便,其实VS就是一个很好的DMP文件分析工具,这里我们通过一个简单的控制台项目来分析一个DMP文件。
Edison Zhou
2018/08/20
1.3K0
使用VS2013分析DMP文件
使用 Visual Studio 调试 .NET 控制台应用程序
“调试”和“发布”是 Visual Studio 的内置生成配置 。 可使用“调试”生成配置进行调试,使用“发布”配置进行最终版本分发。
51Aspx
2022/03/30
2.1K0
如何在Visual Studio中调试.NET源码
In order to configure Visual Studio 2013 do the following in the Tools -> Options -> Debugging -> General menu:
卡尔曼和玻尔兹曼谁曼
2019/01/22
2K0
如何在Visual Studio中调试.NET源码
windbg蓝屏调试
一般在写Windows内核程序的时候,经常会出现蓝屏的问题,这个时候一般是采用记录下dump文件然后用windbg查看得方式,具体的过程就不说了,网上一大堆的内容。现在我主要记录自己当初按照网上的方案出现windbg的open crashdump项呈现灰色的情况。就像下面这样
Masimaro
2019/02/25
1.4K0
适用于 Linux 的 .NET Core App Service 诊断工具正式发布
我们很高兴地宣布面向 .NET Core 的 App Services Linux 诊断工具正式发布。借助此功能,我们现在为收集可帮助您调试应用程序代码问题的深度诊断数据提供内置支持。这些数据包括内存转储和分析器跟踪。这些工具使开发人员能够诊断 Linux 上的各种 .NET 代码场景,包括:
Edi Wang
2021/11/30
1.5K0
适用于 Linux 的 .NET Core App Service 诊断工具正式发布
Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用程序。
张传宁IT讲堂
2019/09/17
4K0
Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
搭建一个自动化分析 DUMP 平台
本文来告诉大家如何一步步搭建一个 DUMP 分析平台,核心是用来分析桌面端的应用软件,如 WPF 软件的 DUMP 文件。在开始之前需要说明的是,如果桌面端软件使用纯 WPF 实现,中途没有调用不安全的 C++ 库,那么 DUMP 平台几乎无用,原因是 WPF 是 .NET 应用,而 .NET 是安全的,除非是系统环境问题,否则依靠捕获异常所拿到的信息就完全超过了 DUMP 能获取的信息。因此本文的核心功能是提供给调用了不安全的 C++ 等语言编写的库的桌面端软件 DUMP 分析平台
林德熙
2021/03/26
1.7K0
使用Windbg和SoS扩展调试分析.NET程序
在博客堂的不是我舍不得 - High CPU in GC(都是+=惹的祸,为啥不用StringBuilder呢?)、 不是我舍不得 - .NET里面的Out Of Memory 看到很多人在问如何分析dump,所以就写下了这篇短文,抛砖引玉。 一、安装 DebuggingToolsforWindows: 从以下 Microsoft 网站下载 DebuggingToolsforWindows: http://www.microsoft.com/whdc/devtools/debugging/installx8
张善友
2018/01/19
1.5K0
Windows程序Dump收集
前面一篇写过《Windbg调试----Windbg入门》,可能不少新手会问,我在本地用Visual Studio去做调试就行了,为什么还需要那么抽象的Windbg去进行调试呢?
河边一枝柳
2021/08/06
1.1K0
Windows程序Dump收集
windbg调试dump文件_dump是什么文件夹
需要使用WinDbg工具来分析windows系统产生的dump文件,此工具属于Windows SDK的一个组件,在微软官方网站可以下载(链接)。
全栈程序员站长
2022/11/10
1.9K0
windbg调试dump文件_dump是什么文件夹
使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述。
Esofar
2019/05/14
1.9K0
使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
使用Windbg调试内核
Windbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。
战神伽罗
2019/07/24
1.6K0
获取和分析Dump的几种工具简介[通俗易懂]
最近在进一步学习support技能的时候,了解到分析Dump的重要性,经过学习,做一些笔记。
全栈程序员站长
2022/11/11
18.1K1
获取和分析Dump的几种工具简介[通俗易懂]
用Windbg来分析.Net程序的dump
介绍 1. 什么是Windbg WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。 WinDbg是微软很重要的诊断调试工具: 可以查看源代码、设置断点、查看变量, 查看调用堆栈及内存情况。 Dump文件是进程的内存镜像, 可以把程序的执行状态通过调试器保存到dump文件中 2. Windbg可以解决以下问题 ◆ 内存高 ◆ CPU高 ◆ 程序异常 ◆ 程序Hang死 3. 使用windbg进行调试
蓝夏
2018/04/28
2.7K0
用Windbg来分析.Net程序的dump
使用 Visual Studio 2022 调试Dapr 应用程序
使用Dapr 编写的是一个多进程的程序, 两个进程之间依赖于启动顺序来组成父子进程,使用Visual Studio 调试起来可能会比较困难,因为 Visual Studio 默认只会把你当前设置的启动项目的启动调试。 好在有Visual Studio 扩展(Microsoft Child Process Debugging Power Tool 插件)可以支持。这个思路来自 https://github.com/dapr/dotnet-sdk/issues/401#issuecomment-747563695
张善友
2022/12/13
1K0
使用 Visual Studio 2022 调试Dapr 应用程序
在 .NET 应用程序中运行 JavaScript
前几天我在做一个副业,意识到我需要使用一些 JavaScript 功能。一想到要再次处理 Node.js 和 npm,我就完全放弃了,所以我决定研究一下在 .NET 应用程序中运行 JavaScript 的可能性。很疯狂吧?实际上,这出乎意料的简单。
独立观察员
2022/12/06
2.6K0
在 .NET 应用程序中运行 JavaScript
Windows Mobile上的小宇宙
  在codeproject上看到了一个非常有意思的应用,windows mobile上看星座图。试想下面一个场景,在北京寒冷冬天的一个晚上,西北风把城市上空的污染物吹跑了,用肉眼就可以看到明亮的星星,于是问自己正南方那颗明亮的星星是啥名字?搞笑,我又不是天文学爱好者,我怎么知道。这时候,我不慌不忙的拿出Windows Mobile手机,运行一个程序,输入我的时区和城市,就能够看到我现在的天空中的星星,还能够查出它们分别是几等星,这是不是很有意思呢。   这个创意来自于希腊的Giannakakis Kost
ShiJiong
2018/01/11
9820
Windows Mobile上的小宇宙

相似问题

如何在visual studio 2017中调试.net dmp文件

13

使用WinDbg,保存.dmp文件

11

在WinDbg中分析CLR .dmp文件

31

如何用WinDbg查看.dmp调试中的MFC字段?

12

UMDH/Windbg不兼容DMP文件?

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文