MATLAB에서 공유 라이브러리 (QSP.so
)를 호출합니다. 라이브러리는 C로 작성되고 mex 게이트웨이를 사용하여 데이터가 공유 라이브러리에 전달됩니다.공유 라이브러리 심볼을로드 할 수 없습니다. GDB
1) MATLAB에서 게이트웨이 함수를 호출하면 MATLAB은 대부분 시간을 고정시킵니다. 오류 다음 2)가 Here 설명 된대로, 코드를 디버깅하고, 입력 기능 (QSP
)에서 중단 점을 설정하기 위해 GDB를 사용할 때, 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를 멈출 수있는 방법을 알고 싶습니다.
또한, 다음은 내 메이크입니다 :
이 볼 수있는 바와 같이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
, 나는 사전에 모두 .o
및 .so
파일
감사에 대한 -g
플래그를 사용합니다.