Under the hood

互联网上新生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  C/C++

摘要:在复杂的软件系统中,调试和错误定位是比较麻烦的,很多错误只能在后期才能发现。通常的排除故障的做法是在觉得可能出错的地方多输出一些LOG,通过 LOG信息逐步定位问题。在复杂的场合下,不但要知道在什么地方出错,还得知道它的执行上下文信息。从另一个方面来看,输出太多的信息会影响系统性能,而且无关的信息也会干扰故障诊断。因此,显而易见的理想情况是,系统正常时LOG越少越好,出现故障时输出尽可能多的信息。本文讨论了一些这方面的想法。 阅读全文

posted @ 2008-10-16 11:13 sting feng 阅读(803) 评论(0) 推荐(0) 编辑

摘要:在实际的应用开发中,log模块设计是必不可少的一部分,log模块设计的好坏直接影响到系统的性能和日后的维护。总的来说,log模块在功能上除了日志级别、时间和消息正文这些必须的信息外,最好还能记录日志产生时尽可能多的信息,比如线程ID、模块名称、源文件、代码行等。在log接口的设计上则应该尽可能简化,以方便使用。在基于C/C++开发的应用中,log接口通常设计成带可变参数的C风格函数。对C 程序员这是很合理的选择,但是对于强调强类型安全的C++来说,可变参函数的类型不安全特性是最遭C++程序员诟病之处。本文给出了一种基于C++ iostream的类型安全且线程安全的log接口。 阅读全文

posted @ 2008-10-16 11:03 sting feng 阅读(856) 评论(0) 推荐(0) 编辑

摘要:推荐一篇介绍Visual C++对象模型的老文章。这篇文章详细介绍了C++的一些运行时实现细节,诸如类的布局、虚函数机制等。以下摘自原文: This paper looks “under the hood” of C++, explaining “run-time” C++ implementation details such as class layout techniques and the virtual function call mechanism. Questions to be answered include: * How are classes laid out? * How are data members accessed? * How are member functions called? * What is an adjuster thunk? * What are the costs: o Of single, multiple, and virtual inheritance 阅读全文

posted @ 2008-10-16 11:02 sting feng 阅读(269) 评论(0) 推荐(0) 编辑

摘要:Remote Run Library是一个为部分代码提供完整的远程(这里的远程指不同于本进程的其他进程空间)运行环境(包括在代码中使用隐式API调用、字符串常量、全局 /静态变量、异常保护)的工具。它允许你在任意进程(只要你有足够的权限)运行一段代码甚至一个exe,从而可以让两个或多个可执行文件在同一个进程空间运行。 阅读全文

posted @ 2008-10-16 11:01 sting feng 阅读(493) 评论(0) 推荐(0) 编辑

摘要:介绍如何在同一个进程空间运行多份(相同或不同)程序。 阅读全文

posted @ 2008-10-16 11:00 sting feng 阅读(737) 评论(4) 推荐(0) 编辑

摘要:SpiderMonkey是Gecko(Firefox浏览器的内核)的JavaScript脚本引擎。这篇教程手把手教你如何利用 SpiderMonkey创建一个能执行JavaScript脚本的C++程序,并让JavaScript脚本操纵你的C++ 程序的内部数据、操作。从这篇教程可以看到在SpiderMonkey引擎的帮助下,让C++程序支持JavaScript脚本是一件很容易的事,更棒的是SpiderMonkey也可以在Macintosh和Unix平台使用。 阅读全文

posted @ 2008-10-16 11:00 sting feng 阅读(2455) 评论(1) 推荐(0) 编辑