TRACE32调试技巧
https://blog.csdn.net/qitaosong/article/details/4708823

1. 调试步骤

l         连接好 TRACE32-ICD 和目标板,注意不要带电插拔 JTAG ,容易损坏 TRACE32 或目标板,然后依次打开 TRACE32-ICD 和目标板的电源。

l         开启调试软件 TRACE32

l         设置 CPU 类型,状态等,可以通过命令或菜单,命令如下:

sys.reset

sys.CPU ARM7TDMI ; 这里设置 CPU 类型

sys.up ; 启动调试,如果正常的话,状态为 system.ready; 否则会报错,需要检查 CPU 设置是否正确, TRACE32 和目标板的连接和电源是否正常

如果调试正常启动后,就可以下载编译好的文件(可以是 .elf 、 .binary 等文件)到 RAM 或 FLASH 中调试了

l         下载编译文件,命令如下:

data.load.elf E:/source/test.elf /PATH E:/source

这里的 /PATH 选项是用来指明源代码的路径,在调试时 TRACE 就可以查找到源代码了。 这里 TRACE 会根据 .elf 文件里包含的目标代码起始地址加载到 RAM 的对应地址上,也可以指定加载到 RAM 的地址,但须和编译时的设置一致,否则程序不能正常运行。

注: TRACE 也可以把编译目标文件烧录到 flash 中进行调试,需要使用 flash 烧录相关命令,这里就不详述了。

l         然后就可以设置断点进行调试了,如:

break.set 0x0c008000

TRACE32 的断点有两种,一种是硬件断点(在 FLASH 中的断点),另一种是软断点(在 RAM 中的断点);硬件断点需要 CPU 的支持,如 ARM7 最多只支持 2 个硬件断点,如果使用了软断点的话,就只能使用一个硬断点了;而软断点没有限制,可以设置很多个。

注:在 TRACE32 中,如果要使用硬件断点,需要先设置好 FLASH 内存映射范围,如下命令:

Map.bonchip 0x0000--0xfffff ; 具体范围根据目标板 FLASH 的范围设置

l         设置好断点就可以正常调试了。

2.       源代码调试

在编译源码的时候,编译成 ( 加 -g 选项 )debug 版本的目标文件(可以是 axf/elf 等格式),用 TRACE32 就可以直接进行源代码调试了。 TRACE32 几乎支持所有的编译器的编译文件,具体格式参见 TRACE32 的帮助。 axf/elf 等编译文件也叫符号文件,即在文件中把源码的符号表(函数 / 变量等)保存下来了,供调试时使用,但里面的符号表只是起定位作用,在调试时还需要有目标源代码,否则只能进行汇编级调试, TRACE32 支持把机器码反汇编成汇编语言进行调试,而且不需要目标文件支持, TRACE32 可以自动从 FLASH/RAM 中读取机器码,然后反汇编成汇编代码。

通过 data.load 命令把符号表文件 (.elf 等 ) 下载到目标机器上,指定源代码路径,就可以进行代码调试。

data.load.elf E:/source/test.elf /PATH E:/source

3.       死机定位方法

在调试产品时会碰到设备死机的情况,如下在调试过程中出现问题,可以很方便的用 TRACE 来查看问题;但如果是设备在正常运行时(没有接 JTAG 调试)出现问题或死机就比较难定位问题了;这里可以通过 TRACE32 的 attach 功能来进行调试,如下:

l         把出问题的机器和 TRACE32-ICD 连接好(连接 JTAG ,测试机器需先预留 JTAG 口),然后开启 TRACE32 ,设置好 CPU 类型,使用 sys.attach 命令就可以让 TRACE32 和问题机器连接上了,正常连接后, system 的状态就变成了 running 或 up 。

l         接下来可以就可以直接进行汇编级调试了。

l         但一般情况下,汇编级调试很难定位问题,需要进行源码级调试,可以按如下操作进行:先把 TRACE32-ICD 和一个同问题机器同类型的机器连接好,然后把符号表文件( .elf 文件等)下载(通过 data.load 命令)到好的机器上,然后再把 JTAG 线从好的机器上拔下,连接到问题机器上;然后再用 sys.attach 命令让 TRACE32 和文件机器连上,这样就可以进行源码级调试了。

如果不想这么麻烦,也可以这样操作,连接好 TRACE32-ICD 和问题机器,打开 TRACE32 软件,此时 system 的状态为“ system down ” , 然后通过“ data.load ”命令下载符号表文件 (.elf 等 ) ,由于 system 状态为 down , TRACE32 会提示没有符号表文件没有下载成功,不用管它,因为虽然没有下载到问题机器的 RAM 上,但符号表文件已经下载到 TRACE32 上了;然后再通过 sys.attach 命令让 TRACE32 和问题机器关联上,这样就可以进行源码级调试了。
————————————————
版权声明:本文为CSDN博主「qitaosong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qitaosong/article/details/4708823

WINDOWS TRACE32+JTAG调试技巧相关推荐

  1. vs调试技巧和诀窍系列_维护Windows PC的35个最佳技巧和窍门

    vs调试技巧和诀窍系列 When working (or playing) on your computer, you probably don't think much about how you ...

  2. jtag引脚定义_从逆向分析的角度学习硬件调试技巧JTAG,SSD和固件提取

    我想从逆向的角度做了深入了解JTAG,JTAG是许多嵌入式CPU使用的硬件级别调试机制,我希望通过这篇文章从逆向工程师的角度解释如何使用JTAG,并在此过程中提供一些实际示例. 0x01 研究目标 通 ...

  3. Javascript调试技巧整理

    整理一下网上看到的实用调试技巧! 1. 不要使用alert 首先,alert只能打印出字符串,如果打印的对象不是String,则会调用toString()方法将该对象转成字符串(比如转成[object ...

  4. 反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......

    反调试技巧总结-原理和实现 -------------------------------------------------------------------------------------- ...

  5. VS2010中的调试技巧

    跳到当前光标处(Ctrl+F10) 我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按F10/F11,一步步走到目标代码处.当程序员的确需要仔细观察每一步的状态变化时, F10 ...

  6. Visual Studio原生开发的20条调试技巧(下)

    我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...

  7. Visual Studio原生开发的10个调试技巧

    最近碰巧读了Ivan Shcherbakov写的一篇文章,<11个强大的Visual Studio调试小技巧>.这篇文章只介绍了一些有关Visual Studio的基本调试技巧,但是还有其 ...

  8. [调试技巧] 如何利用WinDbg找出程序崩溃的位置

    http://blog.csdn.net/wangningyu/article/details/6748138 之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个 ...

  9. VC++调试技巧学习总结

    VC6.0调试方法 有时候,我们编写好一个程序后,希望通过调试来知道变量值的变化情况,下面我和大家分享一下怎么利用VC6.0来查看变量值变化情况. 工具/原料 VC6.0软件.待测试程序 方法/步骤 ...

最新文章

  1. 【死磕JVM】五年 该知道JVM加载机制了!
  2. windows十大必禁服务
  3. python3.6.1安装教程-ipython安装(python3.6.1)(转载)
  4. 移动端调试 weinre
  5. 我历时3年才写了10余篇源码文章,但收获了100w+阅读
  6. 关于级联删除和级联修改
  7. Hadoop技术在商业智能BI中的应用
  8. bzoj千题计划287:bzoj1228: [SDOI2009]ED
  9. ganlgia-rrdcached
  10. pythoning——11、正则匹配
  11. ubuntu arm qt_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解
  12. JSTL 核心标签库标签共有13个
  13. HikariCP 的Java数据库连接池介绍及配置
  14. 移动通信网络协议 — GTP-U 隧道协议
  15. JavaMail gmail邮箱,gmx邮箱,disroot邮箱,protonmail邮箱,tutanota邮箱以及阿里云服务器邮箱配置
  16. 【PS/PSD】237款日系小清新文艺唯美梦幻手绘插画分层PSD素材
  17. 月度行业报告模板说明
  18. ios6 屏幕旋转总结
  19. iOS 上传ipa包成功找不到ITMS-90338: Non-public API usage
  20. 开放Centos7端口

热门文章

  1. 这世界很大,这世界也很小
  2. 创建虚拟目录真实位置在/usr/local/maomao,内容自定,但允许abc和xyz用户通过密码访问
  3. UG\NX二次开发 删除所有图层类别 UF_OBJ_delete_object
  4. COVER + THE BOY WHO LIVED
  5. Praat脚本-024 | 如何使用PyToBI工具自动标注韵律边界调
  6. 【Windows】【Audio】Windows 11 声音配置
  7. 511遇见易语言大漠多线程自动切换账号循环登录任务模板
  8. 嵌入式linux内核oops,Linux系统Oops
  9. 关于交换两个整型变量值的几种方法
  10. Oregon Tool任命Elliot Zimmer为首席执行官