5
我試圖調試在單元測試場景下運行在check下的共享庫。 共享庫是靜態鏈接(無dlload
)並且兩個單元測試應用程序和共享庫與調試符號(-g
)gdb不停止在斷點
在gdb
我想設置在包含在共享庫中的函數斷點編譯。 我成功設置了一個斷點,但是當它運行時它只是通過斷點。
我已經嘗試過:
我的共享庫放在printf
,它打印出來,因此函數實際上是調用。
下面是我使用的編譯生成文件:
SHELL = /bin/sh
CC = gcc
CFLAGS = -g -Wall -std=gnu99 -Iinclude
EXTRA_FLAGS = -fPIC -shared
LIBFLAGS = -fPIC -shared
LDFLAGS = -shared -pthread -lcheck
DEBUGFLAGS = -O0 -D _DEBUG
RELEASEFLAGS = -O2 -D NDEBUG -combine -fwhole-program
TEST_LDFLAGS = -lcheck -lllist -Llib -Wl,-rpath $(OBJDIR)
OBJDIR = lib
TARGET = $(OBJDIR)/libllist.so
TEST_TARGET = starttest
SOURCES = $(shell echo src/*.c)
HEADERS = $(shell echo inc/*.h)
TEST_SOURCES = $(shell echo tests/*.c)
TEST_OBJECTS = $(TEST_SOURCES:.c=.o)
OBJECTS = $(SOURCES:.c=.o)
PREFIX = $(DESTDIR)/usr/local
BINDIR = $(PREFIX)/bin
all: $(TARGET) tests
$(TARGET): $(OBJECTS)
mkdir -p $(OBJDIR)
$(CC) $(FLAGS) $(LIBFLAGS) $(DEBUGFLAGS) -o $(TARGET) $(OBJECTS)
tests: $(TEST_OBJECTS)
$(CC) $(FLAGS) -o $(TEST_TARGET) $(TEST_OBJECTS) $(TEST_LDFLAGS)
# Need a special rule to compile the lib to allow EXTRA_FLAGS
$(OBJECTS): $(SOURCES)
@echo [Compiling]: $<
$(CC) $(CFLAGS) $(EXTRA_FLAGS) -o [email protected] -c $<
clean:
rm -rf $(TEST_OBJECTS) $(OBJECTS) *~ $(TARGET) $(TEST_TARGET)
runtests:
./$(TEST_TARGET)
你是對的,我解決了這個問題,通過在check框架中使用調試選項來關閉分叉。謝謝。 - http://check.sourceforge.net/doc/check_html/check_4.html#No-Fork-Mode – stdcall