Shell的Debug命令

原创
01/01 12:43
阅读数 364

欢迎关注VxWorks567

如转发,请标明出处!

使用Host的Target Server与Target的WDB Agent连接后,既可以使用 Workbench的Debugger进行图形化的在线调试,也可以使用 Host Shell的gdb进行命令行的调试
如果没有Target Connection呢?其实VxWorks还提供了一个专门用在Shell里的dbgLib - debugging facilities(INCLUDE_DEBUG)
-> dbgHelpb                               Display breakpoints and eventpointsb         addr[,task[,count [,quiet]]]                                Set breakpointbi        [bpId]                Display breakpoint(s) detailed informatione         addr[,eventNo[,task[,func[,arg]]]]] Set eventpointdprintf   addr,task,count,fmtStr[,args]                                Set dynamic printf eventpointbd        addr[,task]           Delete breakpointbdall     [task]                Delete all breakpoints and eventpointsc         [task[,addr[,addr1]]] Continue from breakpointcret      [task]                Continue to subroutine returns         [task[,addr[,addr1]]] Single stepso        [task]                Single step/step over subroutinel         [adr[,nInst]]         List disassembled memorytt        [task]                Do stack trace on taskhdprintf  addr,access,task,count,fmtStr[,args]                                Set hardware dynamic printf eventpoint                                (bh() help entry lists access modes)bh addr[,access[,task[,count[,quiet]]]] Set hardware breakpoint         access :      0 - instruction        1 - write 1 byte                       3 - read/write 1 byte  5 - write 2 bytes                       7 - read/write 2 bytes d - write 4 bytes                       f - read/write 4 bytes 9 - write 8 bytes                       b - read/write 8 bytes

写个小栗子

#include <stdio.h>
void eee(){ printf("!%s\n", __FUNCTION__); }void ddd(){ printf("!%s\n", __FUNCTION__); eee(); }void ccc(){ printf("!%s\n", __FUNCTION__); ddd(); }void bbb(){ printf("!%s\n", __FUNCTION__); ccc(); }void aaa(){ printf("!%s\n", __FUNCTION__); bbb(); }

用它来试试这个dbgLib的操作

先加个断点,例如在bbb()的位置

从aaa()启动程序,新任务会在bbb()处停住

使用tt ()看一下调用栈,使用l ()看一下即将执行的汇编代码(尽管我也看不懂)

使用dprintf()加个动态事件点,例如在ddd()的位置

使用c()让程序执行到下一个断点或结束

很不错的小机制!

打完收工

我是泰山 专注VX 0x10

一起学习 共同进步

本文分享自微信公众号 - 这里只有VxWorks(VxWorks567)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部