Tool之dprintf

没人能保证自己编码一次成功,只要Coding,就难免有Bug。因此才有了《Tool之Debugger》存在的必要;在调试过程中,又难免添加一些打印语句,通常使用函数printf(),或者logMsg(),再或者《Component之kprintf》。但这会改变代码,并且需要重新编译、下载,有些麻烦。有没有更省事的方法呢?可以考虑WorkBench的"dynamic printf"

这个"dynamic printf"是从Vx67开始新加的功能。它是在WorkBench中(而不是Code中),基于断点,动态插入打印语句,当程序执行到特定位置时,可以用来打印变量的值,目前支持的变量类型有int和char*

启动一个最简单的例子

程序里有个变量i,它的值一直在变。因为是Local的,不能在Shell里查看它;加断点的话,又会打断程序的执行,影响循环的周期。

那就试试dprintf:先启动Debugger(例如通过Attach这个任务)

然后在代码合适的位置右击,选择Add Dynamic printf

在打开的dprintf属性页面里添加要打印的内容即可

点击确定之后,在断点窗口里就可以看到这条dprintf语句了。很快,Target端也输出了dprintf的执行结果

有兴趣的话,可以试试dprintf的几个属性

本文分享自微信公众号 - 这里只有VxWorks(VxWorks567)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IO之Basic IO

    Basic I/O system的7个函数:creat(), remove(), open(), close(), read(), write(), ioctl...

    Taishan3721
  • Signal之基本知识

    Signal是一种处理异常或异步改变执行流程的机制,类似于软中断。与POSIX兼容,VxWorks也定义了63种Signal(0为NULL Signal)

    Taishan3721
  • Task之调度策略

    我们知道VxWorks是一个典型的Multitasking OS(多任务操作系统),每个Task都可能有多种状态,其中处于Ready状态的Task一旦拿到CPU...

    Taishan3721
  • 缓冲区溢出实战-slmail

    缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意...

    字节脉搏实验室
  • go module

    go 1.5 引进了vendor管理工程依赖包,但是vendor的存放路径是在GOPATH底下,另外每个依赖还可以有自己的vendor,通常会弄得很乱,尽管de...

    用户2937493
  • Go Module详细使用教程,包管理不在难

    go modules是 golang 1.11引入的新特性。模块是相关Go包的集合。modules是源代码交换和版本控制的单元。go命令直接支持使用module...

    咻咻ing
  • 石桥码农:如何在本地基于 nideshop 架设一个微信小程序商城?

    本文主要基于 nideshop 和 moshopserver 构建,在本地构建,mysql可以用本地的,也可以用云上的。这个项目的意义,主要在于自己学习和研究小...

    李艺
  • Go——依赖管理

    在Go1.5 release的版本的发布vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方法。 查找依赖包路径的解决 当前包下...

    羊羽shine
  • 迁移到 Go Modules

    Go 项目使用多种依赖管理策略,其中对 vendor 包的管理有两个比较流行的工具 dep 和 glide,但他们在行为上有很大的差异,而且并不是总能很好地同时...

    Dabelv
  • [Golang]包管理

    本文是本人在探索 Go 最新的包管理 Go Modules 的一些总结,希望能够更深入了解 Go 最新的包管理方式,以及在实际环境中将它很好的使用起来。

    别打名名

扫码关注云+社区

领取腾讯云代金券