1
2
以下主要是为了便于调试 之后 释放。 Stackwalker 类似的工具提供了一种简单的方法,可以在没有激活调试器的情况下,在最终用户机器上获得可用的调用堆栈。相当相似, Google Breakpad 可用于从崩溃的进程中轻松提取小型转储。 |
2
4
我经常使用boost断言来检查输入、中间计算和返回之前,即使它看起来很明显。 它迫使您考虑哪些值可以带您获取数据,并使您更容易快速地找到一个重构,这会留下一些愚蠢的错误。 如果你真的关心性能,你可以在发布版本中禁用它们。 关于内存管理,我大量使用RAII,并尽我所能地使用尽可能少的指针和手动内存分配。当代码中只有2或3个指针时,更容易避免出错。 |
3
3
有趣的是,为了跟踪内存问题,我们在工作中有一个非常类似的项目。
很多人都对RAII发誓,但甚至使用
我为(Amadeus)工作的公司目前正在开发中
AMPolice
哪一个再充电
如您所见,这与您自己的方法完全不同:二进制文件保持不变,并且在必要时(使用命令行API)通过切换到“调试”内存管理(在运行时)来跟踪内存分配。 因此,这更容易使用,尽管从我们的测试来看,它确实会影响计时(4x或5x)。
该工具是非常通用的,因此通常可以被许多人使用,但当然,主要问题仍然是日志的剪切大小,因为跟踪每一个
|
4
1
你可以用“log4cxx”之类的东西来记录你正在生成的统计数据。 http://logging.apache.org/log4cxx/index.html 这应该允许您控制运行时正在进行的跟踪级别(或者至少通过运行时读取的配置文件)。 它将自动为日志设置时间戳,并允许您将输出格式化为适合其他工具(例如Excel或数据库),以便对日志数据进行统计分析。 |
5
1
我个人倾向于一开始就不写bug。向应用程序中添加大量调试代码可能会产生不幸的副作用。它显然会影响性能,在多线程应用程序的情况下,它可以更改应用程序的时间,从而隐藏mt错误。 我发现我通常只花很少的时间调试我的代码——而任何我花在调试器上的时间我都算作浪费的时间。我发现有帮助的是,在我做了每一个更改之后,我都可以运行测试——您不必使用TDD来使用这种方法。 |
6
0
我的C++现在有点生疏了,但我确实记得每当我要分配一个对象时,我就有一个宏执行它: 新(班) 然后是释放对象的宏。然后,每个宏将存储创建和销毁对象的类和行号。 这样就可以通过查看对象未被释放的位置来轻松检测内存泄漏。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |