首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于一个没有源代码的随机崩溃的应用程序,我们能做些什么?

对于一个没有源代码的随机崩溃的应用程序,我们能做些什么?
EN

Stack Overflow用户
提问于 2009-01-13 15:53:09
回答 10查看 1.8K关注 0票数 1

我正在试着帮助一个客户解决一个问题,但是我已经没有办法了。他们有一个自定义的,内部编写的应用程序,按计划运行,但它崩溃了。我不知道这样有多久了,所以我不认为我可以追溯到任何特定的软件更新的崩溃。最不幸的是,不再有任何VB6动态链接库的源代码,它包含了逻辑的主要部分。

此VB6动态链接库是由VB脚本中的2-3个函数调用启动的。显然,我可以修改VB脚本以添加错误日志记录,但我没有多少机会获得高质量的信息来精确定位崩溃的来源。我在所有函数调用的两端都放置了日志记录消息,并确定是哪个调用导致了崩溃。但是,err对象中不会返回任何内容,因为调用会导致wscript.exe崩溃。

我不确定是否还有什么我能做的。有什么想法吗?

编辑:我关心的主要原因,即使我没有源代码,也是因为可能有一些外部因素导致崩溃(凭据不足,文件锁定等)。我已经检查了由于wscript.exe崩溃而在drwtsn32.log中创建的日志文件,我得到的唯一信息是“访问冲突”。

我首先倾向于认为这与安全权限有关,但这不会也是内存访问违规吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-01-13 17:05:11

如果您确实认为这是环境的问题,可以考虑使用Sysinternals工具。我曾经使用Filemon找出我的应用程序正在访问的所有文件,然后发现了一个问题。

您可能还希望使用Dependency Walker进行快速的健全性检查,以确保您实际加载的是您认为自己正在加载的DLL文件。我看到错误的C运行时版本被加载,并导致一个神秘的崩溃。

票数 6
EN

Stack Overflow用户

发布于 2009-01-13 15:57:20

根据应用程序的范围,您的客户端可能会考虑重写。如果没有源代码,当其他东西发生变化时,他们最终都会被迫这么做。

票数 4
EN

Stack Overflow用户

发布于 2009-01-13 16:01:28

总是可以使用调试器-无论是直接在运行崩溃应用程序的PC上还是在内存转储上-来确定在某种程度上发生了什么。在这种情况下,代码是VB6,这可能不是很有帮助,因为您只能获得Win32级别的有用信息。

最终,如果你没有源代码,那么找出bug在哪里是真正有帮助的呢?您无论如何都无法修复它,除非您可以在调用脚本中永远避免该代码路径。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/439489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档