关于频繁动态调用 dll出现系统报错(高手请进)(50分)

  • 主题发起人 主题发起人 xiaolin0522
  • 开始时间 开始时间
X

xiaolin0522

Unregistered / Unconfirmed
GUEST, unregistred user!
业务处理过程包含在dll中,在程序需要频繁(每分钟900次)调用其中 函数,采用动态加载调用。
偶尔(一个小时一次,有时几分钟一次)在调用该dll中业务处理函数时。出现如下异常,请问是什么原因?
Access violation at address 0048C10C in module 'My.exe'. Read of address 31303030
(机器是双cpu nt服务器)
 
要看这个错误是在调用程序中报的还是在 dll中报的,如果没有全局变量应该没有问题。如果用了全局变量或全局对象应该做线程同步
 
是在调用中程序中捕获到的。
没有dll的源码了
 
每分钟900次为什么还要动态加载?
 
说错了,是显示载入。多次调用,程序退出才释放 dll
 
一时判断不出问题,不过,此问题可以用下面的方法定位:
编号一个 Log 函数,此函数可以将一个值添加到某一个固定位置的文件中去。注意,如果你希望不必要去除这些 Log 代码,应该在其中加入#IFDEF 等方法,判断是否处于调试状态等信息。这样,这些代码并不需要从最终的代码中去除。
在每一段可能会出错的代码后面,添加一个Log方法,并给出一个唯一的位置量。
然后,运行此程序,在出错后,根据最后一个Log的位置量,可以定位出错误之所在。
 
谢谢各位。
其实出现错误的位置已经知道,就是不知道出错的原因!
一个错误是 向 一个socket 发数据,如果是缓冲满 也不停的发。 结果产生execption
另一个错误是 调用 dll中的函数 ,后出现 execption (也就是上面说的原因)
 
我也有类似的问题。
 
如果你的DLL没有源代码了,那就不太好办了,建议慢慢放弃这个DLL或者这个DLL的函数,不然你以后怎么维护、调试、升级呢?
 
后退
顶部