本文共 1572 字,大约阅读时间需要 5 分钟。
1, 原始机器数据格式化输出
static const char *fmt_lower = "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x";
static void uuid_unparse_x(const uuid_t uu, char *out, const char *fmt) { struct uuid uuid; uuid_unpack(uu, &uuid); sprintf(out, fmt, uuid.time_low, uuid.time_mid, uuid.time_hi_and_version, uuid.clock_seq >> 8, uuid.clock_seq & 0xFF, uuid.node[0], uuid.node[1], uuid.node[2], uuid.node[3], uuid.node[4], uuid.node[5]); }
如何 把数据 按照 16进制 输出??(8进制??)
2,
root@CentOS5 ~]#pmap -d 9639
每列的含义如下: 参数 解释
Address:进程所占的地址空间 Kbytes:该虚拟段的大小 RSS:设备号(主设备:次设备) Anon:设备的节点号,0表示没有节点与内存相对应 Locked:是否允许swapped Mode 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write) Mapping:bash 对应的映像文件名 Resident :表示在内存中驻留的段的空间
3,
一次为了调试ACE的代码打开了ACE_TRACE的开关,除了对蜂拥而出的日志输出有印象外还对ACE的函数进出提示产生了好感。对于后台调试的时候,往往必须使用大量的日志跟踪。而简单的加入函数进出的功能是一个不错的选择。
稍稍看了一下ACE的实现,感觉效果一般,还要自己写跟踪的函数名称。也不是太爽。(ACE估计是苦于大家对C++标准的支持程度)。感觉了一下,其实函数的进出跟踪都可以使用一个结构的构造和析构函数跟踪,而函数的信息完全可以使用各种宏代替。而这些信息可以作为参数传递给这个结构。
GCC实现了如下的函数宏
__func__ C99的标准,但是GCC只输出函数名称。不知道VC.NET 为啥不支持
__FUNCTION__ 同__func__,
__PRETTY_FUNCTION__ 非标准宏。这个宏比__FUNCTION__功能更强, 若用g++编译C++程序, __FUNCTION__只能输出类的成员名,不会输出类名; 而__PRETTY_FUNCTION__则会以 <return-type> <class-name>::<member-function-name>(<parameters-list>) 的格式输出成员函数的详悉信息(注: 只会输出parameters-list的形参类型, 而不会输出形参名).若用gcc编译C程序,__PRETTY_FUNCTION__跟__FUNCTION__的功能相同.
而VC.NET提供的函数宏为:
__FUNCTION__ 函数,提供类名和函数名称的输出。
转载地址:http://ovdub.baihongyu.com/