2011-01-26 289 views
2

在嵌入式文件系統上,我想擺脫libthread_db。我的理解 是隻有在使用pthread調試程序時纔有必要。然而,這裏是我的觀察:如何擺脫libthread_db

  • 如果libthread_db所不存在在啓動時(當使用PROGRAMM第一併行線程啓動),啓動這樣的程序會導致段錯誤。

  • 稍後添加libthread_db(即在pthread程序分段後)不會改變任何內容。每個使用pthread的程序都會在啓動時發生段錯誤。

因此,似乎libthread_db是使用pthread運行任何類型的程序的基本要素。

+0

使用`ldd`,我無法找到一個線程的程序,對libthread_db所鏈接。你在用什麼C庫? – 2011-01-27 07:04:10

回答

5

libthread_db從來沒有使用的線程化程序。它是只有由調試器使用。

您斷言libthread_db以某種方式需要使用pthreads運行程序是不正確的。如果您的pthread程序在從系統中刪除libthread_db時崩潰,則其他在您的嵌入式目標上被破壞;去除libthread_db只是觸發其他東西。

您可以簡單地確認一下:在普通的Linux系統上構建一個pthread程序。在strace下運行該程序,並觀察libthread_db未出現在strace輸出中。現在將/lib/libthread_db.so.1重命名爲其他內容,並觀察測試程序繼續正常工作。

+0

+1,他還有其他事情可能正在編譯線程庫。 – 2011-01-27 07:05:07