Windbg的gflags.exe -- Attach调试利器

简介: 有没有碰到过程序启动就因为异常直接crash?有没有碰到程序启动之后什么反应也没有?有没有碰到过程序启动之后去触发另一个进程失败?有没有碰到别人的程序调用了你的代码,出现问题以后,让你来调查,而你只有你的源代码,该怎么办?     碰过这样的问题,应该都会很头疼吧,如何诊断问题呢?最简单的当然是Debug吧,可是当程序没有启动的时候,我们不能Attach to process...因为进程还不存在。

有没有碰到过程序启动就因为异常直接crash?有没有碰到程序启动之后什么反应也没有?有没有碰到过程序启动之后去触发另一个进程失败?有没有碰到别人的程序调用了你的代码,出现问题以后,让你来调查,而你只有你的源代码,该怎么办?

    碰过这样的问题,应该都会很头疼吧,如何诊断问题呢?最简单的当然是Debug吧,可是当程序没有启动的时候,我们不能Attach to process...因为进程还不存在。但如果等启动程序再Attach,启动时的代码段早就过了。

    当然你还有一种选择,就是写Log,但是Log的信息都是有限的,而且没有单步调试,很难跟踪到错误的原因。

    所以,对我们程序员来说,最简单当然是Debug。该怎么办呢?我们需要就是gflags.exe。该怎么用呢?

  1. 首先你需要安装Debugging Tools for Windows (http://msdn.microsoft.com/en-us/windows/hardware/gg463009)。里面有大名鼎鼎的Windbg哦,不过今天要用的是其中的gflag.exe。
  2. 双击打开gflags.exe,选择Image File标签。
  3. 在Image栏里输入你希望调试的程序名。比如,mstest.exe。(按Tab)
  4. 勾选Debugger并输入vsjitdebugger.exe。
  5. 点击OK或者Apply。

gflats setting

  • 再次启动你的程序吧,这时候就可以看到VS Debugger的调试选框。
  • 勾选“Manually choose the debugging engines”选框。
  • 并选择打开你的代码的VS。

VS Debugger

  • 选择你的Debugger engine吧,如果你是.net 4.0的代码,那么就选择Managed (v4.0)。

Debugger engine

  • 终于,你的VS已经可以Attach到该启动程序中了。

    尝试下gflags.exe的威力吧,真的很好用,帮我解决了很多问题。强力推荐。

 

from:http://blog.csdn.net/lunasea0_0/article/details/6292968

目录
相关文章
|
监控 Windows
如何追踪Windows 进程自动异常退出
教你如何追踪Windows 进程自动异常退出
如何追踪Windows 进程自动异常退出
|
Kubernetes Docker 容器
【Docker】'TLS handshake timeout' 问题修复记录
'TLS handshake timeout' 问题修复记录
1877 0
【Docker】'TLS handshake timeout' 问题修复记录
|
机器学习/深度学习 缓存 人工智能
大语言模型中常用的旋转位置编码RoPE详解:为什么它比绝对或相对位置编码更好?
Transformer的基石自2017年后历经变革,2022年RoPE引领NLP新方向,现已被顶级模型如Llama、Llama2等采纳。RoPE融合绝对与相对位置编码优点,解决传统方法的序列长度限制和相对位置表示问题。它通过旋转矩阵对词向量应用角度与位置成正比的旋转,保持向量稳定,保留相对位置信息,适用于长序列处理,提升了模型效率和性能。RoPE的引入开启了Transformer的新篇章,推动了NLP的进展。[[1](https://avoid.overfit.cn/post/9e0d8e7687a94d1ead9aeea65bb2a129)]
1798 0
|
Web App开发 存储 缓存
第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
297 0
|
编译器 C++ Windows
windows10安装gflags和glog
windows10安装gflags和glog
761 0
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | 2023 | MPDIoU、InnerMPDIoU助力细节涨点
YOLOv5改进 | 2023 | MPDIoU、InnerMPDIoU助力细节涨点
359 0
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
521 0
|
C++ Windows
windows 下C++生成Dump调试文件与分析
windows 下C++生成Dump调试文件与分析
1168 0