【发布时间】:2018-05-24 13:41:59
【问题描述】:
我正在尝试使用libconfig 为我的程序创建配置文件。有两种情况,一种可以完美运行(本地范围对象),另一种失败(全局范围对象)。我试图理解为什么一个失败而另一个成功,因为我的理解是两者都是创建相同对象的定义(只是在不同的范围内)。
第一个(不起作用):我在全局范围内定义了一个 Config 对象。然后我在 Config 对象上调用 readFile。程序在这里崩溃。
#include <libconfig.h++>
libconfig::Config cfg;
int __attribute__((constructor)) Init()
{
cfg.readFile("/home/jalius/csgo-internal/hack.cfg");
}
第二个(有效):我定义了一个本地 Config 对象并在其上调用 readFile。
#include <libconfig.h++>
int __attribute__((constructor)) Init()
{
libconfig::Config cfg;
cfg.readFile("/home/jalius/csgo-internal/hack.cfg");
}
【问题讨论】:
-
什么是运行时错误?
-
我将如何提取这些信息?这个共享库使用 dlopen 注入到另一个进程中。我在进程上打开了 gdb,并看到主线程在 libconfig.c 中的某个地方收到了 SIGSEGV(我没有调试符号)。
-
SIGSEGV信号表示分段错误。
标签: c++ class constructor segmentation-fault