
c++
ufwt
爱好技术
展开
-
dmalloc使用
1。安装dmalloc redhat已经安装好了2。autoconf使用 shell: function dmalloc { eval `command dmalloc -b $*`; }configure.ac: 见gateway的configure.ac头文件:(必须放在最后) #if HAVE_DMALLOC_H #include #原创 2004-09-01 17:35:00 · 1836 阅读 · 2 评论 -
2个程序(一个用glue,一个直接连接xpcom)用了NS_GetServiceManager全部死掉,SIGSEGV的原因
个程序(一个用glue,一个直接连接xpcom)用了NS_GetServiceManager全部死掉,SIGSEGVgluetest 错误的原因是因为gluetest和libxpcomglue.a编译选项不一致,使得gluetest和libxpcomglue.a中的 getter_AddRefs(nsCOMPtr&)代码不一致(调用方式也不一致),然后执行的时候libxpcomglue.a原创 2007-06-07 15:50:00 · 1278 阅读 · 0 评论 -
用mozilla的xpcom来维护库
现在我们已经实现了好的库,也可以用,但是有几个问题1.相互依赖问题,使得接口一修改,就比较麻烦2.不是动态load是否有这个可能,把我们的库变成xpcom的对象,程序直接调用。研究中。。。原创 2007-06-01 17:02:00 · 1039 阅读 · 1 评论 -
SMP 的thread safe 安全
最近用一个网上开源的c++库, 里面多object做引用计数,实现代码为 int count;addRef(){ count++;}relaseRef(){ if (--count ==0){ delete this; }}在多cpu的情况下,这个代码是有问题的,因为++,ii不一定是thread safe的修改方法: 在x86中用asm的lock解决可以参考ACE的aotimc_O原创 2007-05-21 10:02:00 · 1160 阅读 · 0 评论 -
cppunit
cppunit主要结构主要是Test和TestResult的交互,Test是一个接口,可能不只 一个测试,他里面可能包含好多的测试,TestResult是用 来得到测试结果的接口。TestResult是用来收Test的信息的, 把结果delege到TestListener。 TestCase是有TestFixture的Test。用户的原创 2006-12-02 10:24:00 · 943 阅读 · 0 评论 -
universalchardet学习
mozilla有一个模块,叫universalchatdet,是用来判断是什么编码的 他的主要流程是这样的: HandleData(batch_of_text) { if (batch_of_text contains BOM) report UCS2; if ((inputState is PureAscii) || (inputState is EscAscii))翻译 2006-12-02 10:21:00 · 3351 阅读 · 0 评论 -
getopt_long的使用
#include #include static struct option long_options[] = {{"user", required_argument, 0, u},/*u表示返回值*/{"password", required_argument, 0, p},{"startip", required_argument, 0, s},{"原创 2006-11-27 17:28:00 · 804 阅读 · 0 评论 -
开发程序的步骤(自己开发程序的总结)
开发加单元测试 用单元测试跑代码覆盖率 如果不满意,就加没有运行到的代码的测试 用单元测试跑memory leak... 实际系统测试原创 2006-11-27 17:26:00 · 943 阅读 · 0 评论 -
用scopeguard库来保证Exception-Safe Code
int clientfd= socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(clientfd syslog(LOG_LOCAL0|LOG_ERR,"can not create BroadcastMessage socket"); return; } ON_B原创 2006-11-27 17:29:00 · 774 阅读 · 0 评论 -
在emacs中用ffap打开相关的文件
在emacs中写c或者c++的程序,如果point停在include 文件上面的话如:#include “stdio.h”时用C-c c-f 直接打开stdio.h文件配置如下:在.emacs中加(require ffap)(ffap-bindings) 就可以了如果想打开自己目录中的文件,如hdr/xxx.h ,可以配置ffap-c-path来实现原创 2006-04-08 17:27:00 · 1352 阅读 · 0 评论 -
用ACE的MPC来生成vc的工程
mwc.pl or mpc.pl见ACE原创 2006-03-05 20:23:00 · 1655 阅读 · 0 评论 -
用algrind来检查linux的程序的memeoy leak
http://valgrind.org/原创 2005-07-31 22:43:00 · 886 阅读 · 0 评论 -
奇怪的malloc问题!
我们的程序运行的很好,多少在每天0点时候可能会吧cpu弄的很高!开始怀疑是glibc的bug(因为死在malloc_consolidate),在网上没有查到,看来还是要查查自己的程序,可能是这个程序错误! 结果:是多线程问题,以为没有同步,使得一个内存被释放了多次,然后使得malloc实现中的list破坏,使得里面死循环!!!原创 2004-09-12 01:20:00 · 2263 阅读 · 1 评论 -
测试的重要性
原来在一个公司的时候,为了调试一个错误,化了15天的时间才找出来!现象如下: 一个程序的调试版本在运行一段后会错误,后来发现是调用一个函数几十万次后出现的!然后我们写了一个测试程序,一直调用这个函数,让错误出现!总于找到了!原来十这个函数的一个变量没有初始化,在vc的debug版本中就初始化为0xcccc,这个函数吧这个变量的值给了另外一个函数B,B检查这个值原创 2004-09-12 01:11:00 · 2079 阅读 · 1 评论 -
用glue库写了一个main还是,调用一个com成功
在main中直接用nsComPtr,并且最后shutdown是有问题的,使得程序死掉原因是nsComPtr在shutdown时还没有析构原创 2007-06-04 15:52:00 · 786 阅读 · 0 评论