我正在調用MATLAB的共享庫(QSP.so
)。該庫用C編寫,並使用mex網關,數據通過共享庫。看來我的C代碼中有一些錯誤,因爲我有以下問題:無法加載共享庫符號,GDB
1)在MATLAB中,當我調用網關函數時,MATLAB大部分時間凍結。 2)當我用GDB調試代碼,如所描述Here,並設置在入口函數(QSP
)斷點,GDB不會在斷點處停止,並創建以下錯誤:
warning: Could not load shared library symbols for ./QSP.so.
Do you need "set solib-search-path" or "set sysroot"?
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb289db40 (LWP 4234)]
0xb72a7a0e in ??() from /lib/i386-linux-gnu/libc.so.6
我很確定網關沒有問題,因爲當我不調用共享庫時,一切都很好。另一方面,如果沒有調試器,就很難找到問題。所以,我想知道如何讓GDB在斷點處停下來。
此外,以下是我的Makefile:
CC = gcc
CFLAGS = -c -fpic -Wall -Werror -O3 -g
all: QSP.o ExtraRoutines.o
$(CC) -shared -o QSP.so -g $^
QSP.o: QSP.c ExtraRoutines.c QSP.h
$(CC) $(CFLAGS) $^
ExtraRoutines.o: ExtraRoutines.c QSP.h
$(CC) $(CFLAGS) $^
Moving:
mv -f QSP.so ../
Clean:
rm *.o
可以看出,我用-g
標誌都.o
和.so
文件
任何幫助表示讚賞和感謝提前。