10

皆さん、gdb 内で「next」命令を使用すると、ソースコードの各行が 2 回表示されていることがわかりました---確かに、これらのコードはどのループにもありません。これが現象です:

(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 に答える