如何摆脱libthread_db

sho*_*nex 2 linux embedded pthreads

在嵌入式文件系统上,我想摆脱libthread_db.我的理解是,只有在使用pthread调试程序时才需要它.但是,这是我的观察:

  • 如果libthread_db在引导时不存在(当启动第一个使用programm的pthread时),启动这样的程序会导致段错误.

  • 稍后添加libthread_db(即在pthread程序发生segfaulted之后)不会改变任何内容.每个使用pthread的程序都会在启动时出现段错误.

所以似乎libthread_db对于使用pthread运行任何类型的程序都是必不可少的.

Emp*_*ian 5

libthread_db从未使用通过螺纹程序.它由调试器使用.

libthread_db以某种方式使用pthreads运行程序所需的断言是不正确的.如果您的pthread程序在libthread_db从系统中删除时崩溃,则嵌入式目标上的其他内容会被破坏; 删除libthread_db只是触发别的东西.

您可以轻松地确认这一点:在常规Linux系统上构建一个pthread程序.运行该程序strace,并观察libthread_db它没有出现在strace输出中.现在重命名/lib/libthread_db.so.1为其他东西,并观察测试程序继续正常工作.