2013-04-27 68 views
4

我想從控制檯開始調試我的應用程序。gdb無法打開共享對象文件

> gdb ./Geod 

然後在gdb

(gdb) run 

和我得到的輸出:

error while loading shared libraries: libGeo.Cored.so.1: 
cannot open shared object file: No such file or directory 

該系統被配置如下:

> echo $LD_LIBRARY_PATH 
    /home/paceholder/projects/geo/lib/debug 

> ls $LD_LIBRARY_PATH 
    libGeo.Cored.so.1.0.0 
    libGeo.Cored.so 
    libGeo.Cored.so.1 
    libGeo.Cored.so.1.0 


(gdb) show solib-search-path 
    The search path for loading non-absolute shared library symbol files is 
    /home/paceholder/projects/geo/lib/debug. 

回答

1

error while loading shared libraries: libGeo.Cored.so.1

有兩個可能的原因:

  • 你忘了export LD_LIBRARY_PATH - GDB創建一個新的外殼,以及未匯出的變量不復制到新的外殼
  • 你有一個~/.bashrc或一些這樣重新設置LD_LIBRARY_PATH(不這樣做!)

您可以驗證上述任何一種爲真這樣做:

(gdb) shell 
$ echo $LD_LIBRARY_PATH 
$ ls $LD_LIBRARY_PATH 
+0

我說出口的語句在〜/ .bashrc,現在打開終端後,我有正確的輸出 '>回聲$ LD_LIBRARY_PATH /home/paceholder/projects/geo/lib/debug' 但是在我用'(gdb)shell'描述過之後,我沒有任何東西,不知何故'LD_LIBRARY_PATH'在gdb啓動後被覆蓋 – paceholder 2013-04-27 21:27:55

5

您可以使用gdb中的set environment命令更改gdb用來啓動您要調試的程序的環境。從gdb的幫助摘錄:

(gdb) help set environment 
Set environment variable value to give the program. 
Arguments are VAR VALUE where VAR is variable name and VALUE is value. 
VALUES of environment variables are uninterpreted strings. 
This does not affect the program until the next "run" command. 

例與LD_LIBRARY_PATH

(gdb) set environment LD_LIBRARY_PATH /home/paceholder/projects/geo/lib/debug 
相關問題