作家
登录

开发一个Linux调试器(十):高级主题

作者: 来源: 2017-10-13 10:22:03 阅读 我要评论

如今当 clone 被调用时,该过程将收到我们的老同伙 SIGTRAP 旌旗灯号。对于本系列中的调试器,你可以将一个例子添加到 handle_sigtrap 来处理新线程的创建:

GDB 长途协定异常易于扩大自定义数据包,这对于实现平台或说话特定的功能异常有效。

  1. case (SIGTRAP | (PTRACE_EVENT_CLONE << 8)): 
  2.     //get the new thread ID 
  3.     unsigned long event_message = 0; 
  4.     ptrace(PTRACE_GETEVENTMSG, pid, nullptr, message); 
  5.     //handle creation 
  6.     //... 

一旦收到了,你可以看看 /proc/<pid>/task/ 并查看内存映射之类来获得所需的所有信息。

GDB 应用 libthread_db,它供给了一堆赞助函数,如许你就不须要本身解析和处理。设置这个库很奇怪,我不会在这展示它若何工作,但如不雅你想应用它,你可以去浏览这个教程。

多线程支撑中最复杂的部分是调试器中线程状况的建模,特别是如不雅你欲望支撑不间断模式或当你计算中涉及不指荷琐 CPU 的某种异构调试。

最后!

呼!这个系列花了很长时光才写完,然则我在这个过程中学到了很多器械,我欲望它是有赞助的。如不雅你有关于调试或本系列中的任何问题,请在 Twitter @TartanLlama或评论区接洽我。如不雅你有想看到的其他任何调试主题,让我知道我或许会再发其他的文┞仿。

【编辑推荐】

  1. Linux inotify功能及实现道理
  2. 在Linux中查找用户帐户信息和登录具体信息的11种办法
  3. Linux下应用inode删除指定文件
  4. Linux内存被吃掉落了,它去哪里了?
  5. Linux获得了其首款基于RISC-V的多核开源处理器
【义务编辑:庞桂玉 TEL:(010)68476606】

  推荐阅读

  用C语言对Gtk+应用进行功能测试

这个简单教程教你若何测试你应用的功能。主动化测试用来包管你法度榜样的质量以及让它以预想的运行。单位测试只是检测你算法的某一部分,而并不重视各组件间的适应性。这就是为什么会有功能测试,它有时>>>详细阅读


本文标题:开发一个Linux调试器(十):高级主题

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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