0
我通過目前在QT/zlib的錯誤工作設置斷點,我想檢查一個變量是否已損壞它崩潰的前行,所以我使用break 1245
但是設置上一行的突破,:GDB不正確的路線
(gdb) info break
Num Type Disp Enb Address What
6 breakpoint keep y 0x02cb0e1e in inflateEnd at inflate.c:1245
breakpoint already hit 6 times
(gdb) c
Continuing.
[Thread 0xb103db70 (LWP 26146) exited]
[Thread 0xb5a74b70 (LWP 26143) exited]
Breakpoint 6, inflateEnd (strm=0x86ccdc0) at inflate.c:1246
1246 if (state->window != Z_NULL) ZFREE(strm, state->window);
這是它的上段錯誤,而不是我設置的斷點。 gdb中的bug或一些古怪的行爲?
編輯:增加該地區的名單我工作:
(gdb) list
1241 {
1242 struct inflate_state FAR *state;
1243 if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
1244 return Z_STREAM_ERROR;
1245 state = (struct inflate_state FAR *)strm->state;
1246 if (state->window != Z_NULL) ZFREE(strm, state->window);
1247 ZFREE(strm, strm->state);
1248 strm->state = Z_NULL;
1249 Tracev((stderr, "inflate: end\n"));
1250 return Z_OK;
(gdb)
編輯:從意見接過建議和使用Ubuntu的從源包(apt-get的源)和建築重建它CFLAGS和SFLAGS被強制爲-O0,但現在它不會返回gdb中的任何行段號,因此我認爲我在某處出錯了。
你用'-O0'構建了嗎? – 2012-04-25 14:48:34
使用系統安裝的zlib和apt-db包,所以我無法完全回答。 – 2012-04-25 14:50:13
什麼*是*行1245? – 2012-04-25 14:54:05