[不知道这个类型的帖子放哪里合适呢]有一个自己写的程序崩溃了,我用了 CrashRpt库 做了dmp转储当用windbg查看的时候,发现:
1. 用 !analyze -v 命令的时候,显示出了我的程序出现问题的位置,包含了我的函数名字。2. 用 Calls 窗口看,却看不到我的函数名。这个 和 k命令显示的栈内容一样
   用 !analyze -v命令能看到的栈顶是:kernel32!RaiseException+0x52   Call窗口所显示的最下面的是:kernel32!ValidateLocale+0xa0d2
!analyze -v 命令后显示的结果中,有关线程id ,我也看了,和 Processes and Threads 窗口中所选择的是一样的。
(出现异常的函数 与 crInstall 的调用处于同一个线程)我并不问有关crashrpt的事,我依稀记得有能切换 Calls窗口显示内容的命令(不是切换线程,貌似是往深了显示,但.kframes 不好使……)

解决方案 »

  1.   

    晕了,找到一篇文章,看到命令就试,发现 .ecxr 就切换到我想要的地方了。This command also instructs the debugger to use the context record that is associated with the current exception as the register context.附加问一下,这两种上下文有什么区别吗? 都各是什么?有别的命令可以达到同样效果吗?(可以经过各种手动,看寄存器值等复杂繁琐操作经过,只要有方法,我觉得这样可以帮助理解区别吧……)
    如果嫌麻烦,可以给链接或者书籍的章节页码,谢谢~由于自己解决,所以就对本楼提的问题提供答案线索的,看情况给分~
      

  2.   

    楼主能不能把你写的这个例子 发给我一份 我正在研究这一块  谢谢啊 邮箱[email protected]
      

  3.   

    主要是想知道CrashRpt的用法 然后放到我写的程序里,非常感谢!
      

  4.   

    没怎么用过windbg,请教下你所说的Calls和我们常用的callstack的有优势么?
      

  5.   

    !dt这个好像能看单个变量;!kv看栈
      

  6.   


    就是“调用栈”窗口。子窗口标题就是“Calls”。
    我还真有这本书,还没看几页,有难度啊……
    这书讲概念吗?比如这两个上下文的区别?