首页 > 代码库 > Debugger–veh & she 粗浅一

Debugger–veh & she 粗浅一

(我自己使用的"笨办法", 就是 class point + 手动去除 (set/get这类抽象层次很低的函数 + onWin常见消息) + when hit 这样,

通过debug output, dynamic 输出了 call sequence.

但归根到底, 找到准确无误的 call stack 才是"核心" )

 

产生这篇文章的缘由是:

1) 调试COM的代码时, 因为引用了一个空指针, 导致抛出了"Read violation"的错误. 但是, exception在break的地方, 却是离最终确定的bug十万八千里.查看堆栈, 发现堆栈被项目的其他组件"影响", 导致混乱不堪.

向前辈请教之后, 得到这样的解法:

1. 确定 exception号: 蓝色框中, 标志处 0xc0000005

image

2. 打开VS的的"Exception", 如图勾选刚才确认的 exception号:

image

 

这样, 当发生exception时, 获得第一手信息的, 不是ntdll, 而是Win Debugger.

 

粗浅的原理:

1. VEH –> SHE

Debugger(VEH) –> try/catch(SHE) 或 unhandled exception –> ntdll.dll

参考:

1. wikipedia( 提供了很多深入的材料 )

image

Debugger–veh & she 粗浅一