0

我已经在 Linux(Ubuntu 11.04 64 位内核 2.6.38)下为网络开发多线程服务器(使用 Pthreads)大约 2 个月了。

该代码目前约为 7000 行C。我一直在多个客户端连接到它并获得服务的网络中使用它。它运行得相当顺利。

突然我面临一个奇怪的问题。时不时地(大约 10 次中的 1 次)服务器由于分段错误而崩溃。我查看了所有代码,但似乎找不到背后的实际原因。任何人都可以指导我这里可能出了什么问题,或者我应该尝试哪些事情来找到实际的错误?

4

2 回答 2

3
  1. 启用核心文件生成。当应用程序崩溃时,加载调试器
  2. 使用带有内存检查的 valgrind 运行您的应用程序
  3. 编写单元测试。很多,并将覆盖率提高到 100%。
  4. 使用valgrind 的 hellgrind对您的应用程序进行压力测试,以测试多线程应用程序
于 2012-04-16T20:27:22.543 回答
1

100% 的覆盖率是不现实的,但只要勤奋,85%-95% 就可以合理地发生。

关于为什么会发生奇怪的错误:http: //stromberg.dnsalias.org/~strombrg/checking-early.html

你说这突然发生了。希望您一直在使用诸如 Mercurial、Git 或 SVN 之类的源代码控制系统。如果您有(或者您可能有夜间备份?),您可能应该回顾一下在问题开始时所做的更改,试图找到错误,这可能是未定义的内存引用。

于 2012-04-16T21:06:18.107 回答