打印

dll调用问题

[复制链接]
1299|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-7-10 23:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在调用别人的一个dll文件,但是该dll有个bug,在一种特别的情况下,该dll就会内存越界,(该dll就是弹出一个窗口,然后在该窗口传一个较大字符串时,dll就会越界)。这样就会导致我自己本身的程序也会崩溃。

现在无法拿到该dll的源码,但是程序必须调用该dll(该dll还实现了其他很多功能),现在能有什么好的方法,可以让dll挂掉的时候,我自己的程序做一下保护,不至于挂掉什么的,谢谢。

相关帖子

沙发
秋天落叶| | 2012-7-10 23:33 | 只看该作者
1 检查一下DLL是否支持ISupportErrorInfo接口
2 如果支持,可以在你自己的程序里,try catch 一下
3 如果不支持,则最好不要在进程内装载该DLL,让另一个服务器装载该DLL然后访问服务器

使用特权

评论回复
板凳
hsbjb| | 2012-7-10 23:46 | 只看该作者
1、可以使用进程外组件进行封装
2、可以使用SetUnhandledExceptionFilter进行结构化异常处理
3、当遇到较大字符串时在exe里对其进行截断
不过这样都不能解决根本问题,因为可能dll挂掉时可能留下某种隐患引发蝴蝶效应,
所以如果该DLL耦合不大的话,可以考虑对部分接口进行替换封装

使用特权

评论回复
地板
dfsa| | 2012-7-10 23:53 | 只看该作者
还是让它挂掉好
能不能避免出现挂掉的情形?
crashrpt和breakpad都能捕捉崩溃,并生成dump文件,可以在崩溃现场显示出谁崩溃了

使用特权

评论回复
5
yybj| | 2012-7-11 22:36 | 只看该作者
1、可以使用进程外组件进行封装
2、可以使用SetUnhandledExceptionFilter进行结构化异常处理
3、当遇到较大字符串时在exe里对其进行截断
不过这样都不能解决根本问题,因为可能dll挂掉时可能留下某种隐患引发蝴蝶效 ...
hsbjb 发表于 2012-7-10 23:46

分析的很好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝