飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2008|回复: 3

[其它] [翻译]Igor的本周小贴士#85:源代码级调试

  [复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2022-4-17 12:17:40 | 显示全部楼层 |阅读模式
    Igor’s tip of the week #85: Source-level debugging
    翻译作者:梦幻的彼岸
    更新日期:2022年4月17日
    原文标题:Igor’s tip of the week #85: Source-level debugging
    原文地址:https://hex-rays.com/blog/igors- ... ce-level-debugging/
    备注:若发现有可完善的地方,希望可留言反馈,共同完善


    尽管IDA首先是为了在 "黑盒 "模式下分析二进制文件而创建的,即没有任何符号或调试信息,但它确实有能力在可用时使用这些信息
    调试器的功能最初也是为调试汇编级的二进制文件而优化的,但现在也可以在源代码上工作。
    源码级调试
    源码级调试默认是启用的,但可以通过Debugger > Use source-level debugging 菜单项,或调试工具栏上的按钮手动关闭或开启。
    如果输入文件有IDA支持的格式的调试信息(如PDB或DWARF),当调试开始时,它将被自动使用,并且正在执行的代码被调试信息所覆盖。
    源代码文件
    如果源文件存在于原始位置,IDA将在单独的源视图窗口中打开它们,并突出显示当前执行的行。汇编指令仍然显示在IDA视图中,你可以继续使用它进行分析,而不需要源代码视图。需要注意的是,当当单步执行在源代码中没有对应关系的指令时,IDA可能会自动切换到反汇编(例如,编译器辅助函数,或辅助代码,如prolog或epilog指令)。
    当单步执行反汇编后,执行回到源代码覆盖的区域时,你可以通过Debugger > Switch to source这个动作要求IDA再次显示相应的源代码(也可以在上下文菜单和工具条上使用)。这个动作甚至可以用在远离当前执行点的代码上。
    源路径映射
    有时二进制文件对应的源代码可能是可用的,但与调试信息中记录的位置不同(例如,你可能在不同的机器上调试二进制文件,甚至从不同的操作系统远程调试)。在预期位置没有找到的文件会被打印在输出窗口。
    使用Options > Source paths...,你可以设置IDA的映射,以便在新的位置找到源文件。
    Locals-局部变量
    当调试信息包括局部变量的信息时,IDA可以用它来显示它们的值。当你把鼠标悬停在源代码视图中的变量上时,会显示一个简短的、单行的变化形式。
    对于更复杂的对象,打开专用视图可能更方便,在那里你可以展开和检查字段和子对象。这个视图可以通过Debugger  > Debugger windows > Locals来获得。
    Watches-监视
    除了局部变量,你还可以只观察你需要的特定变量,而不是所有局部变量,或者全局变量的值。这个视图可以通过 Debugger  > Debugger windows > Watch view打开。可以使用Ins或上下文菜单添加变量。
    调试伪代码
    即使你没有你要调试的代码的调试信息,但有一个反编译器,也有可能像调试源文件一样调试伪代码。如果启用了源码级调试,但没有你正在浏览的特定代码片段的调试信息,IDA将自动使用伪代码。在调试过程中,你也可以使用常用的Tab热键切换到伪代码。在调试伪代码时,局部变量、监视和源码级断点与 "真正的 "源代码一样,都可以使用。




    P.S. 细心的读者可能会在这篇文章中发现一个额外的惊喜。复活节快乐!

    评分

    参与人数 1威望 +1 飘云币 +1 收起 理由
    飞天 + 1 + 1 万水千山总是情,给个评分最贴心!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    难过
    昨天 08:57
  • 签到天数: 527 天

    [LV.9]以坛为家II

    发表于 2022-4-17 14:09:22 | 显示全部楼层
    过来学习,多谢分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:09
  • 签到天数: 1405 天

    [LV.10]以坛为家III

    发表于 2022-4-17 21:36:19 | 显示全部楼层
    感谢斑竹分享文章。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-1-29 11:22
  • 签到天数: 232 天

    [LV.7]常住居民III

    发表于 2022-4-18 08:28:35 | 显示全部楼层
    谢谢分享,支持
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表