2015-02-05 162 views
1

我試圖在gdb中運行應用程序,但似乎我在debbuger中遇到了問題。我無法以我嘗試過的所有方式加載共享庫。無法在gdb中加載共享庫

庫儲存在/usr/local/lib64和環境是確定的:

echo $LD_LIBRARY_PATH 
/usr/local/lib64:/home/user/lib 

當我在gdb運行appllication,會發生以下情況:

(gdb) set solib-search-path /usr/local/lib64 
(gdb) show solib-search-path The search path for loading non-absolute 
shared library symbol files is /usr/local/lib64. 
(gdb) info sharedlibrary No shared libraries loaded at this time. 

,我不能設置任何斷點調試我的應用程序,但同時應用程序在gdb中運行正常,調試符號從二進制文件讀取!

我想,問題與權限有關,但不知道它到底在哪裏。

爲了避免任何誤解,我應該注意到我的應用程序運行良好,並且我沒有任何訪問共享庫的麻煩。

回答

3

當我在GBD運行appllication,會發生以下情況:

你有沒有真正運行應用還,所以「裝在這個時候沒有共享庫」是正確的,預期

您需要實際執行GDB run命令。

更新:

我可以執行運行命令,這是一個奇怪的事情。

不,這不是一件奇怪的事情。你沒有問題,一切都按預期工作。

我在猜測你的真正的問題是你不能在你的應用程序正在使用的共享庫中設置斷點。一種解決方案問題是要做到這一點:

gdb /path/to/app 
(gdb) start 

# Application stops at main. 
# You can now set any breakpoint you want. 
(gdb) break foo.c:123 
+0

我可以執行運行命令,這是一個奇怪的事情。 – mortalland 2015-02-06 05:28:39

+0

@mortalland你在解釋你真正的問題是什麼時做得不好。回答更新與我目前猜測它可能是什麼。 – 2015-02-06 07:24:35

+0

是的,正如@EmployedRussian所說的,執行運行命令並不是什麼奇怪的事情。當您執行並運行您的應用程序時,您的共享庫(.so文件)將被加載。 – 2015-02-06 07:32:47