gdb,为什么"下一步"显示每个源代码行两次?

bas*_*bie 9 c c++ gdb

每个人,当在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) {
Run Code Online (Sandbox Code Playgroud)

----- 1544,1545行没有任何循环,但是他们重复了.愿任何人开导我吗?

Tom*_*ner 14

编译时你有什么级别的优化?

即使是最低级别的优化也可能导致调试器像编译器内联,重新排序以及通常使用代码一样疯狂地跳转到源代码行.