(请保留->发布地址: http://yiiyee.cn/blog/author/luobing/ )
上一篇博客中遇到了奇怪的问题,明明没有使用的函数,在编译的时候竟然报错,提示使用了此函数,而且导致程序无法链接。
这让我意识到,还是得建立完整的调试环境,帮助学习开发。
一直以来,我调试代码的方法大概有三种:
1) 打印输出。这是最常用的,也最方便的。不管是通过屏幕打印输出,还是通过串口、USB口等硬件设备打印,都能知道很多程序的内部信息;
2) 观察汇编代码。 主要用来准确的知道程序内部运行状况、库的链接、各种变量等,配合map、lst等文件综合分析。用来解决一些疑难杂症;
3) 断点调试。 这是最好的调试方法,不过视开发的产品,有时候很难实现。如果是调试Windows driver&app,VS系列产品以及Windbg能发挥很大作用;Linux下用gdb,也很好;调试DOS和Legacy bios时,我用debug.exe较多。开发固件代码时就比较麻烦了,要么用软件模拟器调试,要么用JTAG调试。
帮朋友打个小广告,建议读一读张银奎的《软件调试》, 目前他在筹划第二版四卷本的计划。第二版的第一卷已经出版,值得好好读一读。承张老师惠赠一本,正在拜读:
UEFI下开发APP和Driver,以及我目前的目标Option ROM,在实际硬件中是没法使用断点调试的,至少目前我没有找到方法。实在很怀念用debug.exe调试DOS程序的日子,工具虽然简单,该有的功能都有,UEFI下怎么就没提供这种类似的工具呢?
我准备用几篇博客,谈一谈如何建立第二种观察汇编代码和第三种断点调试的方法。当然,断点调试只能在TianoCore(模拟环境)配合下工作,实际硬件就无能为力了。这就足够了,能大大加快各种代码的开发。
这篇介绍如何去观察汇编代码。
继续阅读“UEFI开发探索26 – UEFI下观察汇编代码”3,082 total views, 1 views today