作家
登录

开发一个Linux调试器(二):断点

作者: 来源: 2017-06-28 16:04:46 阅读 我要评论

  •     bp.enable(); 
  •     m_breakpoints[addr] = bp; 
  • 如今我们会在我们的敕令处理法度榜样中增长对我们新函数的调用。

    我删除了字符串中的前两个字符并对结不雅调用 std::stol,你也可以让该解析更结实一些。std::stol 可以将字符串按照所给基数转化为整数。

    大年夜断点持续履行

    如不雅你测验测验如许做,你可能会发明,如不雅你大年夜断点处持续履行,不会产生任何工作。这是因为断点仍然在内存中,是以一向被反复射中。简单的解决办法就是停用这个断点、运行到下一步、再次启用这个断点、然后持续履行。不过我们还须要更改法度榜样计数器,指回到断点前面,这部分内容会留到下一篇关于操作存放器的文┞仿中介绍。

    测试它

    当然,如不雅你不知道要在哪个地址设置,那么在某些地址设置断抱病非很有效。后面我们会进修如安在函数名或者代码行设置断点,但如今我们可以经由过程手动实现。

    测试你调试器的简单办法是写一个 hello world 法度榜样,这个法度榜样输出到 std::err(为了避免缓存),并在调用输出操作符的处所设置断点。如不雅你持续履行被调试的法度榜样,履行很可能会停止而不会输出任何器械。然后你可以重启调试器并在调用之后设置一个断点,如今你应当看到成功地输出了消息。

    查找地址的一个办法是应用 objdump。如不雅你打开一个终端并履行 objdump -d <your program>,然后你应当看到你的法度榜样的反汇编代码。你就可以找到 main 函数并定位到你想设置断点的 call 指令。例如,我编译了一个 hello world 法度榜样,反汇编它,然后获得了如下的 main 的反汇编代码:

    1. 0000000000400936 <main>: 
    2.   400936:   55                      push   %rbp 
    3.   400937:   48 89 e5                mov    %rsp,%rbp 
    4.   40093a:   be 35 0a 40 00          mov    $0x400a35,%esi 
    5.   40093f:   bf 60 10 60 00          mov    $0x601060,%edi 
    6.   400944:   e8 d7 fe ff ff          callq  400820 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt> 
    7.   400949:   b8 00 00 00 00          mov    $0x0,%eax 
    8.   40094e:   5d                      pop    %rbp 
    9.   40094f:   c3                      retq 

    正如你看到的,要没有输出,我们要在 0x400944 设置断点,要看到输出,要在 0x400949 设置断点。

    如今你应当有了一个可以启动法度榜样、许可在内存地址上设置断点的调试器。后面我们会添加读写内存和存放器的功能。再次解释,如不雅你有任何问题请在评论框中告诉我。

    系列文┞仿索引

    你可以在这里 找到该项目标代码。

    【编辑推荐】

    1. Linux基金会泄漏将来 Linux内核可能会惹人情势验证
    2. 懂得Linux的平均负载和机能监控
    3. Linux桌面体系的优势
    4. Stack Clash安然马脚将Linux及其他UNIX操作体系的root拜访权拱手交给任何人!
    5. ps_mem:一个用于精确申报Linux核心内存用量的简单Python脚本
    【义务编辑:枯木 TEL:(010)68476606】

      推荐阅读

      央行印发《中国金融业信息技术“十三五”发展规划》

    《筹划》强调,“十三五”时代金融业要周全支撑深化改革,积极对标国际先辈,推动立异普惠成长,保持安然与成长并重,并环绕兼顾监管体系重要性金融机构、兼顾监管金融控股公司>>>详细阅读


    本文标题:开发一个Linux调试器(二):断点

    地址:http://www.17bianji.com/lsqh/35948.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)