面经真题 | gdb使用相关知识

gdb使用相关知识

  1. 什么是gdb

    参考答案

    gdb全称为GNU Debugger,是可以运行于多种类Unix平台的程序调试软件。类似的软件还有lldblldb常用于macos

    参考资料:

  2. gdb常见命令有哪些?

    参考答案

    gdb的常见命令有:

    1. help: 获取gdb命令帮助
    2. help <command>: 获取特定gdb命令的帮助
    3. run: 运行到下个断点或程序结束
    4. step: 单步(逐语句)调试,会进入到函数内部执行
    5. next: 单步(逐语句)调试,但不会进入到函数内部执行
    6. finish: 结束当前函数或循环
    7. continue: 执行到下个断点或程序结束
    8. up <N>: 往栈顶移动N帧,N默认为1
    9. down <N>: 往栈顶移动N帧,N默认为1
    10. list: 打印当前点附近的代码
    11. print <name>: 打印名为name的变量值
    12. print *<name>: 打印name指针指向的值
    13. print/x <name>: 以16进制打印name的值
    14. print <name>@<n>: 打印以name为起始地址的n个值
    15. break <name>: 在函数name处设置断点
    16. break <num>: 在行num处设置断点
    17. disable 1: 去使能断点1
    18. enable 1: 使能断点1
    19. delete 1: 删除断点1
    20. delete: 删除所有断点
    21. condition 1 <expr>: 断点1的停止条件为表达式expr为true
    22. condition 1: 删除断点1的所有条件
    23. info break: 显示所有的断点信息
    24. backtrace: 查看栈信息
    25. display <name>: 始终显示变量name的值
    26. undisplay <name>: 取消跟踪name的值
    27. watch <expr>: 监视expr的值,一旦有变化就暂停程序

    参考资料:

  3. gdb调试的原理是?

    参考答案

    gdb使用系统调用ptrace(process trace)去观察和控制其它进程的执行、检查和修改其它进程的内存和寄存器。ptrace的原型如下:

    long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);
    

    根据ptrace的manual手册,主要有两种跟踪进程的方式:

    1. 父进程通过fork系统调用创建子进程,在子进程中作如下ptrace调用,然后再通过execv加载子进程程序。

      ptrace(PTRACE_TRACEME, 0, 0, 0);
      
    2. 使用如下ptrace调用直接跟踪其它进程:

      ptrace(PTRACE_ATTACH, pid, 0, 0);
      

    当进程被跟踪时,每当有信号(signal)被分发给被跟踪的进程(tracee)时都会导致tracee暂停(SIGKILL是个例外)。进行跟踪的进程(tracer)通过waitpid系统调用(或类似的wait相关的系统调用)获知tracee被跟踪的情况。当tracee停止时,tracer还可以使用多种ptrace request去检查或修改tracee

    gdb断点(breakpoint)功能的软件实现原理是在

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

ARM/Linux嵌入式真题 文章被收录于专栏

让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通,因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论

相关推荐

06-30 16:23
已编辑
湖南大学 电力电子工程师
技术面试(50分钟)主要过程:1.面试官重新考察了一道机考考试题目,题目为“交流有效值90-264V电源经整流后得到的直流电压最高为多少?”2.面试官了解所在学院、专业的基本情况,询问研究生、本科期间的成绩排名3.宏观问题:谈一谈在简历所写的项目中主要负责哪个板块的工作?所负责的板块能实现什么样的功能?功率做到了多少kW?有没有炸过机?在项目经历中印象最深刻的是什么?4.面试官出了一道考试题目,要求画出经手项目中所负责板块的拓扑图。5.细节问题1:面试官了解我使用的是DSP后,就问我使用的控制芯片是什么型号?系统时钟是多少?ADC是多少位的?采样率是多少?有没有使用高精度PWM?……还有一些名词我没听懂,就搪塞过去了,面试官根据我的回答指出我做的内容存在发波频率和采样频率不匹配的问题。6.细节问题2:采用的双闭环控制方法的相位裕度是多少?带宽是多少?我提出自己是根据实验室以往的工程经验设置的PI参数,没有计算这些响应指标,面试官便问项目中有没有做仿真?我说自己搭的仿真参数和实际的参数有差别,觉得仿真的参考意义不大,面试官说可能是因为模型搭错了,目前看来我做的比较粗,建议以后学习仿真软件psim。我发现华为真的很重视仿真。7.面试官让我问一些其他问题,我觉得面试效果不太好,抓住机会展示了自己在实验室设计研制的样机,陈述了设计过程、遇到和解决的问题,又问了2012实验室的主要业务是什么。8.最后,面试官总结说我有一定硬件基础,但是要注重锻炼仿真能力,在公司的任何一项研究都需要在仿真中验证了有效性,才能在实际中应用,最后面试官以一句“挺好的”结束了面试。当然最后的技术面试也通过啦!
查看3道真题和解析
点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务