C++ 调试fastcgi应用程序
我已经在我的服务器上部署了一个fastcgi应用程序。当我试图在服务器上运行它时,它崩溃了(稍后会有更多) 首先是关于本地(dev)计算机的一些事实:C++ 调试fastcgi应用程序,c++,c,ubuntu,gdb,fastcgi,C++,C,Ubuntu,Gdb,Fastcgi,我已经在我的服务器上部署了一个fastcgi应用程序。当我试图在服务器上运行它时,它崩溃了(稍后会有更多) 首先是关于本地(dev)计算机的一些事实: 该应用程序是C/C++应用程序 我在Ubuntu10.0.4LTS(服务器上的相同操作系统)上开发了这个应用程序 在开发过程中,我使用gdb逐步完成代码以修复初始错误 我在应用程序上运行了ldd,找到了所有必需的共享库 我可以用curl在本地机器上测试它 在对代码进行测试并在本地机器上运行之后,我构建了一个发布版本,并使用Netbeans 6.9
您不需要复制调试二进制文件来调试它(这可能有帮助,也可能没有帮助,这取决于崩溃实际发生的位置)。根据原始海报的要求作为答案发布:
1.您可以将核心转储复制到带有gdb的机器上,并在那里看到回溯。gdb-c core_name binary.name,然后是bt.
2.在启动之前,您如何知道您的应用程序崩溃?开始将内容记录到文件中,而不是仅依赖于实时gdb会话。确保所需的
版本。这样两台服务器上的文件就相同了。因此,盲目地将文件从一台机器复制到另一台机器不是保持服务器处于良好运行状态的推荐方法。1。您可以将核心转储复制到带有gdb的机器上,并在那里看到回溯。gdb-c core_name binary.name,然后是bt.2。在启动之前,您如何知道您的应用程序崩溃?开始将内容记录到文件中,而不仅仅依赖于实时gdb会话。@Torp:谢谢您的评论。我认为我朝着正确的方向前进了——但是经过一点分析,我意识到实际上是控制台上显示的文件本身的内容!(见编辑)@Torp:你能把你的评论作为答案发表吗(这样我就可以接受了)。虽然这不是确切的解决方案,但它让我走上了正确的道路,我能够解决这个问题。。。声誉ftw:)对于任何感兴趣的人。。。我试图从“转储”(实际上是通过管道将流传输到文件)运行gdb-c,gdb抗议说它不是转储文件。我在转储的文件上运行“file”,发现它是一个可执行文件。经过一点调查(使用cmp等),我意识到,我最初认为是一个核心转储,实际上是流式传输到控制台的文件内容。钱马上就掉了——我检查了我的Apache设置,意识到我还没有为fcgi设置Apache——因此Apache只是按照请求返回文件的内容!嗯。。。