除錯linux的動態庫(動態庫的建立 呼叫 除錯)

2021-05-25 05:43:16 字數 884 閱讀 5689

add是庫lib.c中的函式,生成liblib.so

gcc lib.c -shared -g -debug -o liblib.so

編譯呼叫庫的程式,指定庫檔案使用當前路徑

給動態庫函式add設定斷點

(gdb) b add

在下面提示中輸入 y

function "add" not defined.

make breakpoint pending on future shared library load? (y or [n]) y

breakpoint 1 (add) pending.

執行程式 r

(gdb) r

提示如下:

breakpoint 1, add (a=2, b=3) at lib.c:3

3 return a+b;

這時就進入到了動態庫的函式中。

繼續執行程式,輸入c

(gdb) c

continuing.

rusult is 5

program exited normally.

以下是測試程式:

/*  lib.c */

int add(int a,int b)

return a+b;

/* lib.h */

extern int add(int a,int b);

#include

#include "lib.h"

int main(void)

int a=2;

int b=3;

int result;

result = add(a,b);

printf("rusult is %d/n",result);

return 0;

Linux下的靜態庫 動態庫和動態載入庫

linux下可以建立兩種型別的庫 靜態庫 a 在鏈結期間被應用程式直接鏈結進可執行檔案 動態鏈結庫 so 動態庫還分為兩種用法 a 應用程式執行期間鏈結動態庫,但是在編譯期間宣告動態庫的存在,也就是說這種動態庫必須在編譯時對編譯器可見,但編譯器卻不將此種庫編譯進可執行檔案 b 在執行期間,動態載入和...

Linux中的動態庫

編譯動態庫命令 gcc shared fpic o so c showone.c include include myshow.h int myshow showtw.c include include myshow.h int myshow 編譯好之後,再把main函式編譯為可執行檔案 inclu...

Linux的動態連線庫

大家對windows作業系統中的dll檔案一定十分熟悉,其實這種軟體元件化的方法在linux中也可以實現。其實外掛程式和 dll 通常是用來無須編寫整個新應用程式而新增功能的極好方法,一般來講,在不更改原有應用程式的情況下,外掛程式為現有應用程式提供新功能。linux環境下甚至做的更好。linux提...