debug();这个函数是干什么的?

2019-07-25 12:15发布

看到别人的程序,很多都有:


#ifdef DEBUG   debug(); #endif


但是我看DEBUG和debug()函数都没有定义,这样这句话就永远不执行了。
我想问的是,这样写是不是有什么其他的用处?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
ofourme
1楼-- · 2019-07-26 07:26
回复【6楼】sixear:
额~原来还要自己写啊。
---------------------------------
C是很底层的,特别是嵌入式用到的C编译器。
mack13013
2楼-- · 2019-07-26 11:09
本帖最后由 mack13013 于 2017-11-8 13:07 编辑
sixear 发表于 2011-10-14 10:05
希望不要再有人给我说这是条件编译了,我知道这是条件编译,只是想知道什么时候会有DEBUG的定义,有DEBUG的 ...

这个地方嵌入式不怎么好操作的。如果你在windows或者linux下编程的话,因为系统环境会提供非常多的信息API以及操作API给你(比如当前线程ID、堆栈位置、调用模块、冲突位置、exception描述以及定位码之类、dump什么的),你在你的debug{}中就可以写一个通用的debug程序来报告出现错误的现场了,极其有利于开发调试。

要想使用这个东西,一般是先定义一下DEBUG宏,如下:
[mw_shl_code=c,true]#define DEBUG[/mw_shl_code]

然后你就可以完成一个通用的debug{}函数,比如在windows下可以这样做:
[mw_shl_code=cpp,true]#ifdef DEBUG

  debug()

        DWORD dwErrCode = ::GetLastError();
        TRACE("Error occurred.GetLastError code:%d. ");


#endif
[/mw_shl_code]

在嵌入式环境下,这个通用的debug{}就非常难写了,因为你能获取的信息不是很多的,即使你能获取到比较多的信息,写一个“通用的”debug也不太容易。

当然这个程序在软件层面上的位置越高就越好写,比如如果使用了ucos或其他的嵌入式os,os本身也会提供一定的通用信息出来,可以将他放到这个里面来。这种情况下就比“裸奔”要容易处理一些。


一周热门 更多>