如何跟踪 C++ 库的加载过程?

Posted

技术标签:

【中文标题】如何跟踪 C++ 库的加载过程?【英文标题】:How to trace the loading process of C++ libraries? 【发布时间】:2015-12-01 07:33:33 【问题描述】:

我正在开发一个使用 libvlc 库来提供视频播放功能的小型 qt 应用程序,但我遇到的问题是在播放启动时第一次加载所有库需要很多时间.

那么问题来了 - 是否有能力跟踪加载库的过程? (最好向用户显示某种“正在加载...”窗口。)

【问题讨论】:

如何加载库?如果它们在编译期间被链接,我认为没有办法做到这一点(它将由 OS 运行时链接器自动加载);但如果您通过 QtPlugins 执行此操作,则可能有通过 QPluginLoader 的方法。 我动态链接它们,但认为有一种方法可以注入一些加载它的方法并“制作一些魔法”显示加载窗口。 【参考方案1】:

您可以简单地在程序启动期间触发加载这些库,而不是监控加载。这将使您的用户看不到它,因为人们希望程序无论如何都需要一两秒钟才能加载。

一个简单的方法是在程序启动时调用libvlc_new()

【讨论】:

哇,非常棒的解决方案,但我不会在开始时完成,而是在加载的那一刻,因为这个函数是阻塞的(希望调试器不会撒谎)。

以上是关于如何跟踪 C++ 库的加载过程?的主要内容,如果未能解决你的问题,请参考以下文章

Android 分析Native库的加载过程及x86系统运行arm库的原理

如何在 C++ 中跟踪内存分配(尤其是新建/删除)

如何打印 C++ 中捕获的异常的堆栈跟踪和 C++ 中的代码注入

标准 C++ 库的跨平台程度如何?

如何正确包含来自 NVIDIA C++ 标准库的文件?

C++学习(二七七)java加载动态链接库的方法