首页
社区
课程
招聘
如何有效的调试MFC DLL
发表于: 2012-9-12 05:14 6149

如何有效的调试MFC DLL

2012-9-12 05:14
6149
写了个MFC DLL,里面有很多窗口控件.
该DLL是要注入到别人的进程,然后呼出执行一些操作.
当前问题是呼出DLL显示了自己写的窗口,在运行的时候,报MFC的代码出现异常(比如DestroyWindow等),因为汇编基础薄弱,直接看显示的OD代码,很费劲,不能很快找到MFC代码出错的地方. 有没有办法像调试自己的MFC EXE那样,进入debug,显示MFC源码?
或者有MFC源码的map文件也行.(MFC SRC目录下有源码,还有个makefile,不会用...)
请高人指点,谢谢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在MFC DLL中,可能出错的地方::AfxMessageBox(L"这里输出某些变量的值或者显示一下执行到哪个位置了");
找出问题之后再修改,然后把::AfxMessageBox注释

或者就用GOOGLE出来的调试方法。
2012-9-12 06:02
0
雪    币: 98
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
vs有其他进程调试,可以调试其他进程中的自己的DLL,在调试-进程里,选中目标进程就可以在其他进程中调试了。
2012-9-12 09:47
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个不管用,因为暴异常的地方是在MFC源码里头,而不是我的MFC dll代码里头(dll的代码哪里出问题,这个我可以确定,因为有自己的SEH跟着)
2012-9-12 11:02
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我试了下,VC6版本.Build->Start to debug->Attach to process,选择目标进程后,vc已经附加到目标进程,感觉和OD一样,无法调试时显示源码:(
试过被调试的dll选用debug版本还是一样,请问你是怎么让他调试时显示源码的呢?
2012-9-12 11:56
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我通常的做法是每调用一个函数就调用一次AfxMessageBox,并且给它编号,这样,我就大概知道调用的哪个函数出了问题。

如果想调试exe那样直接对原参数信息以及变量信息进行查看, 这个方法的确不太管用。
2012-10-9 11:48
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
自己写个辅助LOG类吧,然后用宏控制是否记录LOG文件,感觉可能会出错的地方打印相应变量的状态。
2012-10-18 10:44
0
雪    币: 225
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看stack调用顺序
2012-10-18 13:35
0
游客
登录 | 注册 方可回帖
返回
//