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