程序“[16980] OpenRoadsUltimateChina.exe”已退出,返回值为 -1073740791 (0xc0000409)。
各位老师, ORD中国版报这个错误闪退是什么原因? 版本号是:OpenRoadsDesignerUltimateforChina_x64_10.10.20.26_zh-CN, 请各位老师帮忙解决一下, 卡在这一步了
是在什么情况下遇到的该错误?启动程序时还是进入程序后执行某个功能时?是否有异常报告(exception log)?
程序执行的过程中遇到的该错误, 异常报告在哪个目录, 我找找发给您
宁小雨 said:程序执行的过程中遇到的该错误
如果是执行的过程中遇到的错误,那该错误是否可重复?比如,您更换另外一个DGN文件做同样的操作看是否能复现这个错误。如果不能,说明该错误有可能是和您当前操作的DGN文件相关。
宁小雨 said:异常报告在哪个目录
对于MicroStation软件,该异常报告在如下位置:
C:\Users\用户名\AppData\Local\Temp\Bentley\MicroStation\10.0.0
注意,以上的用户名需要用您自己Windows的用户名取代。以上的MicroStation需要您用ORD for China的具体名称取代。
5277.rar老师, 我的程序名叫 Checc_pm_ZFD
如果是加载您自己开发的程序Checc_pm_ZFD导致的ORD崩溃,那就需要去逐行调试您的代码了。当然,可以采取折半查找的方法,比如,先将调试断点设置到代码的中间部位,执行到这里看是否导致ORD崩溃,是的话,就说明问题出在代码的前半段,不的话就说明问题出在代码的后半段。如此循环折半,很快就能定位到代码的出错的地方。然后再仔细分析哪一行代码引起的ORD崩溃。
老师, 这个方法我之前试过了, 发现同一个DGN文件, 每次程序崩溃的位置都不一样, 而且, 单步执行就不会崩溃闪退, 现在就是不明白为啥ORD会不报错, 直接闪退, 还有就是ORD闪退报的错(返回值为 -1073740791 (0xc0000409)。)是什么意思
宁小雨 said:单步执行就不会崩溃闪退
MS包括ORD内部都采用了很多事件驱动的机制在工作,而这些事件驱动必须在有充足的CPU闲置时间的条件下才能被执行到。如果你的程序写得不合适,都是一些连续执行的功能,这样就不会给这些事件驱动留有被执行的时间,从而导致MS或ORD程序崩溃。单步执行时CPU有充足的时间从而不会导致崩溃。
宁小雨 said:ORD闪退报的错(返回值为 -1073740791 (0xc0000409)。)是什么意思
您可以到网上搜索一下这个错误号,似乎不是ORD特有的,而是许多软件都会共有的一个错误。
所以,根本原因还是在您的代码中。如果单步调试无法定位,那就只能另起炉灶先搞一个最简单的可运行的程序。然后将您现有的代码一点点往里面增加,增加一段就测试一段。这样就比较容易发现问题所在。我们平时写代码千万不要写上百行再去执行测试,而是每写几行就要执行测试,这样比较容易发现问题。
好的老师, 我试试
您可以尝试找到exception.log文件,搜索stack关键字,看看堆栈里面有没有你自己本身的函数,有的话在代码中该函数位置设个断点,重新启动调试一下。
老师, 我查了stack关键字, 但是没找到我自己的函数, 找了两天问题了, 还没找到, 很迷茫