Вам не нужно использовать Valgrind, фактически вы хотите использовать GNU DeBugger (GDB).
Если вы запускаете приложение через gdb (gdb path_to_my_executable_file/executable_file
) и скомпилировали приложение с включенной отладкой (-g
или -ggdb
для компиляторов GNU C / C ++), вы можете запустить приложение (через run
введите команду в приглашении gdb) и, как только вы прибудете в SegFault, сделайте обратную трассировку (bt
), чтобы увидеть, какая часть вашей программы называется std::string::compare
, которая умерла.
Пример (C):
mctaylor@mpc:~/stackoverflow$ gcc -ggdb crash.c -o crash
mctaylor@mpc:~/stackoverflow$ gdb -q ./crash
(gdb) run
Starting program: /home/mctaylor/stackoverflow/crash
Program received signal SIGSEGV, Segmentation fault.
0x00007f78521bdeb1 in memcpy () from /lib/libc.so.6
(gdb) bt
#0 0x00007f78521bdeb1 in memcpy () from /lib/libc.so.6
#1 0x00000000004004ef in main (argc=1, argv=0x7fff3ef4d848) at crash.c:5
(gdb)
Итак, интересующая меня ошибка находится в файле crash.c, строка 5.
Удачи.