dll调用问题

[复制链接]
1983|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文件,可以在崩溃现场显示出谁崩溃了
yybj 发表于 2012-7-11 22:36 | 显示全部楼层
1、可以使用进程外组件进行封装
2、可以使用SetUnhandledExceptionFilter进行结构化异常处理
3、当遇到较大字符串时在exe里对其进行截断
不过这样都不能解决根本问题,因为可能dll挂掉时可能留下某种隐患引发蝴蝶效 ...
hsbjb 发表于 2012-7-10 23:46

分析的很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部