缘起
前一阵子,更新完依赖库后,启动程序报错了。这已经不是第一次报错了。so…… let's dig in!
初遇错误
更新完依赖库,编译通过后,高高兴兴的在 vs 中使用 ctrl + F5,没想到却遇到了下面的错误提示框。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bRo0vXZg-1601271599025)(http://resources.bianchengnan.tech/troubleshoot-program-startup-failure-caused-by-depencent-dll-load-failed/entry-not-found-error.png)]
好吧,几个小时的努力又白费了。应该是新更新的依赖库出问题了,但是需要找出问题出在哪,才好让客户更新依赖库。
从错误提示来看,直观感觉好像是 PBBimCore.dll 缺少了 PK_POINT_create ,真的是吗?
调查
遇到这种问题的第一反映是使用 Dependency walker 查一下是哪个依赖库出问题了。奈何,Dependency Walker 在我机器上运行特别慢,等了好久都没反映。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYj1u60u-1601271599029)(http://resources.bianchengnan.tech/troubleshoot-program-startup-failure-caused-by-depencent-dll-load-failed/hang-dependency-walker.png)]
不能就这么傻等下去,上调试器吧。
在使用调试器之前,需要开启 Show loader

本文介绍了在应用程序启动错误时,如何利用windbg的gflags和dumpbin工具进行故障排查。作者首先遇到更新依赖库后启动程序报错的问题,尝试使用Dependency Walker但发现其运行较慢。接着,通过gflags启用Show Loader Snaps记录启动过程,并在windbg中分析日志,找到了错误提示——程序依赖的外部符号缺失。最终,作者强调了gflags和windbg在解决DLL加载问题上的帮助作用。
最低0.47元/天 解锁文章
4162

被折叠的 条评论
为什么被折叠?



