c – 如何使用arm gdb忽略中断
发布时间:2020-12-16 06:52:02 所属栏目:百科 来源:网络整理
导读:我正在尝试使用arm-none-eabi-gdb调试程序并逐步执行它.有一个中断,USB0_Handler,我不想在步进程序时插入.为了实现这一点,我尝试使用skip,但是它没有用,即使我尝试跳过该函数或跳过整个文件(包含中断).我正在使用openocd来实现tm4c123gh6pm的远程调试. 我已
我正在尝试使用arm-none-eabi-gdb调试程序并逐步执行它.有一个中断,USB0_Handler,我不想在步进程序时插入.为了实现这一点,我尝试使用skip,但是它没有用,即使我尝试跳过该函数或跳过整个文件(包含中断).我正在使用openocd来实现tm4c123gh6pm的远程调试.
我已经达到了一个我不知道是否应该定义自己的gdb函数或者我错过了一点的点.这是我终端的输出: (gdb) info skip Num Type Enb What 1 function y USB0_Handler (gdb) c Continuing. Breakpoint 2,relayTask () at ./relay.c:191 191 nextTime = rtcGetTimeIn(DEFAULT_REFRESH_RATE); (gdb) n USB0_Handler () at ./UsbConfig.c:326 326 { (gdb) n 332 ui32Status = MAP_USBIntStatusControl(USB0_BASE); (gdb) n 337 USBDeviceIntHandlerInternal(0,ui32Status); (gdb) n 338 } (gdb) n #returning at the top of USB0_Handler 326 { 解决方法
当步进时触发中断时,GDB通常会停止,因为步骤在它没有预料到的位置结束.
从调试器的角度来看,中断处理程序通常难以处理,因为它们是在新的上下文中执行的:堆栈帧被更改,除非GDB识别帧中的特定模式,否则它将无法计算完整的堆栈跟踪(即中断处理程序在中断之前构建常规程序堆栈跟踪.) 让你退出中断处理程序的最简单方法是在函数的最后一行设置一个断点,恢复并继续步进.有人建议使用finish命令但它可能会失败,这取决于堆栈跟踪的质量. 由于GDB脚本性(例如在python中),可以通过检查PC并且如果PC在irq向量中的isr地址上自动化,获取返回地址,设置临时断点并恢复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 正则表达式 – Perl分割函数 – 使用重复字符作为分隔符
- Flex 添加节点 prependChild、appendChild
- Swift & Cocoa 实战之泛型编程:Swift 中的泛型编程
- 使用sencha-touch控件制作布局的平板电脑界面
- 在子查询语句(或视图等)中,不能使用Order by语句,除非使
- 正则表达式攻击实例 Regular Expressions Denial of Servic
- 【sqlite3】留给自己点记录(2014. 03 ---- 2014.06)
- 关于依赖注入autofac的相关知识
- 初探swift语言的学习笔记九(OC与Swift混编)
- 正则表达式 – RE2和UTF16(或UCS-2)