• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ++wythern++

            X presents Y for a better Z

            [轉(zhuǎn)]怎么從Backtrace,找到對(duì)應(yīng)的代碼行

            原文在這里

            Backtrace中,一般都只有一些地址。但是利用addr2line這個(gè)工具,就可以找到對(duì)應(yīng)的代碼行。前提條件是可執(zhí)行程序或者動(dòng)態(tài)鏈接庫(kù)編譯的時(shí)候帶-g選項(xiàng)。

            具體來(lái)說(shuō),分兩種情況:

            1. 如果關(guān)注的一行backtrace位于一個(gè)可執(zhí)行文件中,那么直接addr2line -e <executable> <address>
            2. 如果關(guān)注的backtrace位于一個(gè)動(dòng)態(tài)鏈接庫(kù)中,那么麻煩一些,因?yàn)閯?dòng)態(tài)鏈接庫(kù)的基地址不是固定的。這個(gè)時(shí)候,首先要把進(jìn)程的memory map找來(lái)。在Linux下,進(jìn)程的memory map可以在/proc/<pid>/maps文件中得到。然后在這個(gè)文件中找到動(dòng)態(tài)鏈接庫(kù)的基地址,然后將backtrace中的地址 - 動(dòng)態(tài)鏈接庫(kù)的基地址,得到偏移地址offset address, 最后addr2line -e <shared library> <offset address>。

            當(dāng)然,用GDB也可以找出地址對(duì)應(yīng)的代碼行。不過(guò)相比addr2line,GDB需要將BUG現(xiàn)象重現(xiàn)一遍,所以對(duì)于不好重現(xiàn)的BUG,或是隨機(jī)重 現(xiàn)的BUG來(lái)說(shuō),使用addr2line就可以直接從backtrace找到對(duì)應(yīng)的代碼行,不需要重現(xiàn)現(xiàn)象,比GDB使用起來(lái)更簡(jiǎn)單。

            posted on 2013-08-29 14:29 wythern 閱讀(569) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            精品久久久久久亚洲精品| 久久精品视屏| 波多野结衣中文字幕久久| 精品久久久久久国产潘金莲| 久久se精品一区精品二区| 久久99精品九九九久久婷婷| 久久精品国产亚洲αv忘忧草 | 婷婷久久精品国产| 亚洲国产美女精品久久久久∴| 久久国产精品77777| 久久91这里精品国产2020| 国产成年无码久久久久毛片| 免费精品久久久久久中文字幕| 少妇内射兰兰久久| 婷婷久久五月天| 国产免费久久精品丫丫| 国产欧美久久久精品影院| 亚洲精品无码久久毛片| 久久精品国产精品亚洲精品| 久久久久久亚洲精品成人| 婷婷久久综合| 伊人久久成人成综合网222| 国产精品欧美久久久久天天影视 | 色综合久久无码中文字幕| 久久久久亚洲AV成人网| 亚洲国产精品人久久| 久久久久国产一级毛片高清版| aaa级精品久久久国产片| 国内精品久久久久影院薰衣草| 99久久精品免费看国产一区二区三区| 亚洲国产二区三区久久| 久久久久一区二区三区| 2021精品国产综合久久| 99久久人妻无码精品系列蜜桃 | 欧美亚洲另类久久综合婷婷| 亚洲国产二区三区久久| 国产精品欧美久久久久天天影视| 国产亚州精品女人久久久久久| 99热热久久这里只有精品68| 久久亚洲欧美日本精品| 精品免费久久久久国产一区|