私はC ++でいくつかのサーバーを持っています(ビルドシステムから取得したコマンド):
g++ -o obj/server.o -c -m64 -isystem/opt/boost/include -Wall -Werror -march=core2 -ftest-coverage -fprofile-arcs -DGCOV_ENABLED= -Iinclude -I/opt/hydraOST/lzopro/include -I/usr/include/libxml2 -Idaemon/include src/server.cpp
g++ -o bin/server.exe -rdynamic -ftest-coverage -fprofile-arcs -m64 -Wl,-rpath=\$ORIGIN -Wl,-rpath=/opt/hydraOST/lzopro/lib obj/server.o (+ other libs)
それはデーモンであり、シグナルで停止していますが、gdbkill $PID
を使用する前にgcov データのダンプを強制するため:
gdb -p $PID -batch -x gcov/dumpGcovData
gcov/dumpGcovDataの内容:
call __gcov_flush()
thread apply all call __gcov_flush()
リンクが必要であることは知っています-lgcov
が、そのように機能していたので、ビルドシステムで変更しませんでした。フラグを追加した直後に問題が発生しました-rdynamic
(そのフラグなしでは正常に機能しました)。