10

大家,在gdb中使用“next”指令时,我发现每行源代码显示两次-----我很确定,这些代码没有在任何循环中。这是现象:

(gdb) frame
#0  ap_get_client_block (r=0x8560d48, 
    buffer=0xb68501b7 "<?xml version=\"1.0\" encoding=\"utf-8\"?><Root><OperCode>SMS101</OperCode><AppId>SMSMsgFilterReq</AppId><Req><UserMobile>13925237429</UserMobile><SendMsg>abc圲34¨圲23a露07\214圲21¢<237朲11?东215圲10°<214朲27¥応227露07\214正常,hao"..., bufsiz=81920) at http_filters.c:1540
1540        if (r->remaining < 0 || (!r->read_chunked && r->remaining == 0)) {
(gdb) n
1544        bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
(gdb) 
1545        if (bb == NULL) {
(gdb) 
1544        bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
(gdb) 
1545        if (bb == NULL) {

-----第 1544,1545 行没有在任何循环中,但它们被重复了。有人可以启发我吗?

4

1 回答 1

14

当你编译这个时,你做了什么级别的优化?

即使是最低级别的优化也可能导致您的调试器在编译器内联、重新排序并通常使用您的代码时疯狂地跳过源代码行。

于 2012-07-20T09:32:40.273 回答