赞
踩
我们C#运行在.NET Framework上,如果异常没被捕获到,在系统日志里面会有具体的报错。但是如果调用了C++编写的dll,库里面做了什么操作调用了什么我们也不可知晓,这种时候就不会有具体的提示。
首先,我们需要知道都调用了哪些库,从库到具体的调用函数一步步排查,从没出问题的版本到出问题的版本一步步对比。这针对的是极端条件下:没有函数说明、没有Demo。如果有就简单多了,有个参照对照就好。最近碰到的情况是供应商没有提供了最新的库,简单说了一下新增的函数调用的作用,但是没有Demo,出现问题后,要去对比函数的调用关系,有时候得多次调用某个函数会偶现闪退,这种可能是C++库内部索引数组超限什么的。
- [DllImport("z.dll", CallingConvention = CallingConvention.StdCall)]
- public static extern uint ClearDatas(IntPtr channel_handle);
-
-
-
- Method.ClearDatas(channel_handle_);
总之,碰到这种问题一定要把目光聚集到C++库身上。再有复杂的问题,比如闪退了,连系统日志都没有,那这个时候就要考虑环境问题了,操作系统该排查的也要排查。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。