如何捕获DLL中的异常

andy_cai 2013-08-21 05:53:57
现在我需要调用一个DLL完成较复杂的事务
而这个DLL本身也是多线程的

我发现这个DLL有时会出现很严重的错误
比如非法内存读写等等
从而导致整个软件崩溃推出

我该用什么方法来捕获这些异常?
再说一下,这个DLL本身也是多线程的
...全文
1149 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-10-30
  • 打赏
  • 举报
回复
引用 16 楼 windbger 的回复:
程序异常crash,抓取dump,最灵活的工具当属微软调试工具包中的adplus。 http://support.microsoft.com/kb/286350
学习了。
BeanJoy 2013-08-23
  • 打赏
  • 举报
回复
windbger 2013-08-23
  • 打赏
  • 举报
回复
程序异常crash,抓取dump,最灵活的工具当属微软调试工具包中的adplus。 http://support.microsoft.com/kb/286350
andy_cai 2013-08-23
  • 打赏
  • 举报
回复
我还是说明一下条件限制吧,希望各位大侠耐心看一下。 我需要调用第三方DLL,该DLL会创建线程。 现在我认为该DLL存有问题,但我的开发环境没法run这个DLL(因为和设备相关) 所以只能在发布环境中捕获错误信息。
andy_cai 2013-08-23
  • 打赏
  • 举报
回复
引用 12 楼 tiger9991 的回复:
[quote=引用 9 楼 andy_cai 的回复:] [quote=引用 5 楼 tiger9991 的回复:] SetUnhandledExceptionFilter 这个方法不错的,我也用这个 楼主去搜索输出dump文件。
怎么这个方法在release下不起作用?[/quote] 你如果没源码就没用了,另外最好用高版本的VS,我测试在VS2005经常不起作用,但是VS2010运行良好[/quote] 好吧,我的确用的是VS2005。 由于一些原因,目前该项目还不能使用VS2010。
andy_cai 2013-08-23
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
开始、运行、drwtsn32
华生医生记录的信息不够详细
傻X 2013-08-23
  • 打赏
  • 举报
回复
引用 9 楼 andy_cai 的回复:
[quote=引用 5 楼 tiger9991 的回复:] SetUnhandledExceptionFilter 这个方法不错的,我也用这个 楼主去搜索输出dump文件。
怎么这个方法在release下不起作用?[/quote] 你如果没源码就没用了,另外最好用高版本的VS,我测试在VS2005经常不起作用,但是VS2010运行良好
andy_cai 2013-08-23
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
我需要在发布环境下使用 所以你说的这个方式不行 刚才试了一下SetUnhandledExceptionFilter 在release下也没用起来 我不知道是不是什么地方弄错了
赵4老师 2013-08-23
  • 打赏
  • 举报
回复
开始、运行、drwtsn32
andy_cai 2013-08-23
  • 打赏
  • 举报
回复
引用 5 楼 tiger9991 的回复:
SetUnhandledExceptionFilter 这个方法不错的,我也用这个 楼主去搜索输出dump文件。
怎么这个方法在release下不起作用?
赵4老师 2013-08-23
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
andy_cai 2013-08-23
  • 打赏
  • 举报
回复
引用 6 楼 BeanJoy 的回复:
这篇文章是否有用使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP
肯定有用,谢了。 等我这边有了实践结果,再回复结贴。 其他人如果还有另外的方法,我会追加分数的。
傻X 2013-08-22
  • 打赏
  • 举报
回复
SetUnhandledExceptionFilter 这个方法不错的,我也用这个 楼主去搜索输出dump文件。
andy_cai 2013-08-22
  • 打赏
  • 举报
回复
引用 3 楼 oyljerry 的回复:
本质上还是应该解决掉DLL中的异常问题
你说的是理,可这部分内容不受我控制。 并且我不是很想为这个DLL的使用创建单独进程 因为设计到一些较为复杂的状态更新
oyljerry 2013-08-21
  • 打赏
  • 举报
回复
本质上还是应该解决掉DLL中的异常问题
oyljerry 2013-08-21
  • 打赏
  • 举报
回复
SetUnhandledExceptionFilter等,然后重启
  • 打赏
  • 举报
回复
__try dll里面创建线程的话 ,就没办法了,只能改dll的代码了

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧