2019-07-25 12:15发布
sixear 发表于 2011-10-14 10:05 希望不要再有人给我说这是条件编译了,我知道这是条件编译,只是想知道什么时候会有DEBUG的定义,有DEBUG的 ...
最多设置5个标签!
额~原来还要自己写啊。
---------------------------------
C是很底层的,特别是嵌入式用到的C编译器。
这个地方嵌入式不怎么好操作的。如果你在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本身也会提供一定的通用信息出来,可以将他放到这个里面来。这种情况下就比“裸奔”要容易处理一些。
一周热门 更多>