- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如何早于main()创建特定类的实例,早于任何其他实例(包括静态和全局变量,包括在静态和动态库中(包括第三方提供的库))?
我正在处理一个包含多个类的项目,这些类在构建过程中可能会导致错误,例如访问 NULL 指针。任何此类错误都会导致向应用程序发送信号。我有一个信号处理程序可以捕获信号,显示有问题的线程的堆栈跟踪,并调用导致生成核心转储等的默认信号处理程序。
然而,一些这样的导致错误的实例被创建为类的全局变量和静态变量。 IE。它们被构建并在输入 main() 之前引起信号。
为了捕获此类信号,我需要比在 main() 中更早地注册我的信号处理程序,即我需要创建一个实例(它将注册信号处理程序)也作为全局或类静态变量,并且我需要保证此类实例的创建/构造早于任何其他实例。
如何完成?
要注册信号处理程序,我使用 sigaction() .
为了显示堆栈跟踪,我使用 backtrace() , backtrace_symbols() , abi::__cxa_demangle() .
最佳答案
标准 C++ 不提供在翻译单元之间对初始值设定项进行排序的方法,但 gcc 提供。来自 https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html 的示例:
Some_Class A __attribute__((init_priority (2000)));
最低值(最高优先级)是 101。
关于c++ - 如何比任何其他全局或静态变量更早地创建/构造类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48675579/
我安装了 fakeLoader (jquery 预加载器)但我无法在页面加载前显示它。 在 mozilla 中它几乎可以正常工作(奇怪的是......),但在 Chrome 和 Opera 中,页面首
我试图通过以下代码在触摸事件上移动 ImageView: public class ScrollableImageView extends ImageView { private Gestur
我是一名优秀的程序员,十分优秀!