调试.net应用程序时,有时会在windbg中收到错误消息。以下是我最常遇到的几个问题。

Failed to start stack walk---启动堆栈遍历失败

如果你运行sos命令!clrstack在线程上显示.net堆栈,而此线程是.net线程,但它当前未运行任何.net代码,sos将提示失败“Failed to start stack walk: 80004005.”。这并不意味着进程或调试器有任何问题。这仅仅意味着sos不能显示堆栈,因为没有堆栈。如下

Unable to walk the managed stack---无法遍历托管堆栈

如果你在本机线程(即没有对应的System.Threading.thread的线程)上运行!clrstack,sos将显示以下消息。

Following frames may be wrong---以下帧可能错误

如果windbg无法解析某个符号,它将在第一次遇到该符号时出错,告诉您找不到该符号文件,并且在随后的所有时间遇到该符号时,它都将向您发出警告,告诉您它无法正确展开堆栈。当您看到此消息时,这意味着您在警告说明下面看到的任何内容都可能不正确,因此您无法从此处信任堆栈。例如,在本例中,我们可以看到堆栈正在等待输入关键节,DataLayer.dll中的某个方法正在尝试输入关键节,但是,由于我们没有DataLayer.dll的适当符号,因此无法确定它是否是DllUnregisterServer方法。实际上,DllUnregisterServer很可能只是最后一个导出的符号名,否则我们将处于0x43fb的偏移量,这意味着此方法将非常长。
我们不仅不知道这是否是正确的方法名,而且当windbg没有正确的符号时,它甚至可能会丢失堆栈帧,所以您根本不应该信任这个堆栈。

Failed to load data access DLL, 0x80004005---加载数据访问DLL失败

此错误意味着a加载的sos.dll版本不正确,即在本例中,我在1.1转储中加载了2.0版本,或b)找不到正确的mscordacwks.dll版本。如果是选项b,请尝试运行!sym noise 和 run.cordell-ve-u-l.当然,正如错误消息中提到的,确保有一个完整的转储而不是一个小型转储。

在windbg调试.net时遇到的问题的更多相关文章

  1. 【转】WinDbg调试器:启动程序时自动连接调试器方法

    当我们调试服务进程或子进程时,无法直接用调试加载进程的方式启动,此时需要在启动程序时自动连接调试器方法: 第一步:注册表展开到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft ...

  2. 调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令

    调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (二)使用Windbg调试SQLSERVER ...

  3. 调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置

    调试SQLSERVER (二)使用Windbg调试SQLSERVER的环境设置 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (三)使用Windbg调试SQLSERVER ...

  4. 开源项目asmjit——调用自定义方法demo以及windbg调试

    asmjit是一个开源项目,使用它可以将代码即时的编译成机器码,也就是所谓的jit技术. 初次接触这个项目,编写了一个demo,学习它的使用方法. 现将编写的demo以及调试jit生成的机器码的过程总 ...

  5. 使用WinDbg调试SQL Server查询

    上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我们 ...

  6. 使用WinDbg调试SQL Server——入门

    这篇文章我想探究下SQL Server里完全不同的领域:如果使用WinDbg(来自针对Windows的调试工具)调试SQL Server.在我们进入枯涩细节之前,我想详细解释下为什么选择这样晦涩的话题 ...

  7. WinDbg调试流程的学习及对TP反调试的探索

    基础知识推荐阅读<软件调试>的第十八章 内核调试引擎 我在里直接总结一下内核调试引擎的几个关键标志位,也是TP进行反调试检测的关键位. KdPitchDebugger : Boolean ...

  8. WinDbg 调试.net程序

    WinDbg支持以下三种类型的命令: ·        常规命令,用来调试进程 ·        点命令,用来控制调试器 ·        扩展命令,可以添加叫WinDbg的自定义命令,一般由扩展dl ...

  9. 内核,配置WinDbg,调试操作系统(双机调试)

    配置WinDbg,调试操作系统(双机调试) PS: 设置双机调试之前,请先安装虚拟机,并且安装好XP系统.这里不做演示.直接设置. 一丶WinDbg的设置 1) 配置WinDbg的环境,在path变量 ...

随机推荐

  1. Docker 封装java镜像

    一.概述 目前java采用的框架是Spring,服务器直接通过 java -jar xxx.jar 就可以启动服务了. 二.jdk镜像 在docker中跑java应用,需要有jdk环境支持才行. 获取 ...

  2. hystrix中request cache请求缓存

    有一个概念,叫做reqeust context,请求上下文,一般来说,在一个web应用中, 我们会在一个filter里面,对每一个请求都施加一个请求上下文,就是说,tomcat容器内,每一次请求,就是 ...

  3. Linux 6 本地网络配置方法

    在Linux 6 系统安装完成后,需要对网络进行一系列的配置,有些朋友喜欢使用桌面图形化工具的配置方式,这种配置方法虽说比较方便,但是在某些时候并不问题,总是会出现各种问题.特别是作为服务器用途的时候 ...

  4. 记一次线上问题排查:C#可选参数的坑

    线上报了大量异常,错误信息为:找不到XX方法实现 代码调用关系是: 查看代码历史记录,发现最近上线前对 GetUserDottedLineSuperiors 方法做过修改,增加了一个可选参数. 跟相关 ...

  5. (转载) @ConfigurationProperties 注解使用姿势,这一篇就够了

    SpringBoot中的@ConfigurationProperties 传送门: http://www.hellojava.com/a/82613.html

  6. celery 定时任务,使用crontab表达式不执行(版本4.3.x)

    celery 定时任务,使用crontab表达式不执行(版本4.3.x) 在使用celery 执行定时任务时,发现任务不会执行,schedule设置如下: 经测试,如果去掉hour,则任务每分钟都会执 ...

  7. Objective-C 知识点拾遗

    -- :: UIWebView的使用总结 UIWebView全解

  8. Hybris服务器启动日志分析

    build文件检测,使用b2c_acc recipit启动服务器:/home/jerrywang/Hybris/installer/recipes/b2c_acc/build.gradle The T ...

  9. 基于RBAC模型的权限设计:如何设计系统权限体系?

    一.什么是RABC RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念.取消了用户和权限的直接关联,改为通过用户关联角色.角色关联权限的方法来间接地赋予用户权限(如下图),从而 ...

  10. AIX安装单实例11gR2 GRID+DB

    AIX安装单实例11gR2 GRID+DB   一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以 ...