我用Google搜索,froogled,moogled和doogled :-(解釋GDB分段錯誤
raspian
如果我在gdb下運行我的程序,我得到:
(gdb) run
Starting program: /home/pi/axcept/a
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-
gnueabihf/libthread_db.so.1".
axcept v:1.0 20170710
running
[New Thread 0x768e3450 (LWP 6671)]
[Thread 0x768e3450 (LWP 6671) exited]
*** Error in `/home/pi/axcept/a': double free or corruption (out):
0x00025178 ***
Program received signal SIGABRT, Aborted.
0x76a1af70 in __GI_raise ([email protected]=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or
directory.
(gdb) where
#0 0x76a1af70 in __GI_raise ([email protected]=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x76a1c324 in __GI_abort() at abort.c:89
#2 0x76a56954 in __libc_message (do_abort=<optimized out>,
fmt=0x76b0c6e8 "*** Error in `%s': %s: 0x%s ***\n") at
../sysdeps/posix/libc_fatal.c:175
#3 0x76a5cb80 in malloc_printerr (action=1, str=0x76b0c860 "double
free or corruption (out)", ptr=<optimized out>) at malloc.c:4996
#4 0x76a5db24 in _int_free (av=<optimized out>, p=<optimized out>,
have_lock=1992996040) at malloc.c:3840
#5 0x76a7d72c in tzset_internal (always=0, explicit=1991424272) at
tzset.c:443
#6 0x76a7db5c in __tz_convert (timer=0x7efff1e0, use_localtime=1,
tp=0x76b2d2cc <_tmbuf>) at tzset.c:632
#7 0x00011190 in get_today() at today.c:17
#8 0x00012f14 in main (argc=1, argv=0x7efff374) at axcept.c:333
(gdb) list
51 in ../nptl/sysdeps/unix/sysv/linux/raise.c
(gdb)
在axcept.c各地333我有:
...
initialise_db();
read_parameters(0);
get_today();
....
但是read_parameters和get_today都或多或少被官方gnu e xamples。
從我的makefile:
CC=gcc
CCFLAGS= -fgnu89-inline -g -v -da -Q -std=c99 -I/usr/local/include -
L/usr/local/lib -lwiringPi -I/usr/include/mysql/ -I/home/pi/logging/
`mysql_config --cflags --libs` -lwiringPi -lwiringPiDev -lpthread -lm
-lcrypt -lrt
我已經試過的valgrind -v --track-起源= YES MYPROG,但它讓我不聰明。
現在喝醉了!
雙倍免費或腐敗意味着您可以「免費」兩次,或者某處覆蓋「malloc」對象之外的簿記。這個問題可以在以後出現。 'valgrind'應該是解決方案... –
代碼示例的錯誤選擇。今天發生了什麼c:17似乎比axcept.c:333更有幫助。我總是通過我所擁有的最內在的呼喚開始調試。 – flaviodesousa
valgrind顯示什麼? – dlmeetei