在嵌入式文件系统上,我想摆脱libthread_db。我的理解 只是在使用pthread调试程序时才需要它。但是,这是我的观察:
如果libthread_db在启动时不存在(当启动第一个使用programm的pthread时),启动这样的程序会导致段错误。
稍后添加libthread_db(即在pthread程序发生segfaulted之后)不会改变任何内容。每个使用pthread的程序都会在启动时出现段错误。
所以似乎libthread_db对于使用pthread运行任何类型的程序都是必不可少的。
答案 0 :(得分:5)
libthread_db
从不使用线程程序。调试器只使用 。
您使用pthreads以某种方式运行程序需要libthread_db
的断言是不正确的。如果您的pthread程序在从系统中删除libthread_db
时崩溃,则嵌入式目标上的 else 会被破坏;删除libthread_db
只会触发其他内容。
您可以轻松确认这一点:在常规Linux系统上构建pthread程序。在strace
下运行该程序,并观察libthread_db
输出中未显示strace
。现在将/lib/libthread_db.so.1
重命名为其他内容,并观察测试程序继续正常工作。
答案 1 :(得分:1)
您需要使用target record