• <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   管理


            亚洲乱亚洲乱淫久久| 思思久久99热免费精品6| 国色天香久久久久久久小说| 日本高清无卡码一区二区久久| 99久久综合国产精品免费| 久久婷婷国产综合精品 | 久久国产视频网| 久久人妻无码中文字幕| 国产精品久久久久久久| 久久久久香蕉视频| 久久99精品久久只有精品| 欧美成a人片免费看久久| 99久久99久久| 少妇熟女久久综合网色欲| 99久久精品国产毛片| 中文精品久久久久人妻不卡| 久久精品国产一区二区电影| 97久久精品人妻人人搡人人玩 | 久久精品国产99久久久| 久久综合伊人77777麻豆| 精品精品国产自在久久高清| 99久久国产精品免费一区二区| 国产免费久久精品丫丫| 97久久超碰国产精品2021| 伊人久久大香线蕉综合Av| 性做久久久久久久久久久| 99久久精品免费国产大片| 久久香蕉一级毛片| 国产成人精品久久二区二区| 久久九九精品99国产精品| 欧美亚洲国产精品久久久久| 久久乐国产精品亚洲综合| 久久久精品波多野结衣| 久久国产美女免费观看精品| 91精品无码久久久久久五月天| 国产精品久久久久久福利69堂| 成人妇女免费播放久久久| 国产精品99精品久久免费| 久久久久亚洲av无码专区导航 | 精品国产乱码久久久久久郑州公司| AV无码久久久久不卡蜜桃|