如何使用Eclipse(远程)调试器与spawn-fcgi(或类似的进程启动器)

时间:2016-11-05 18:07:00

标签: eclipse nginx gdb fastcgi

我可以使用Eclipse成功(交叉)编译和(远程)调试C应用程序。但我有一堆FCGI应用程序只能在以spawn-fcgi启动时才能工作(因为它们需要以这种方式连接到已经运行的nginx Web服务器),例如:

sudo -u www-data /usr/bin/spawn-fcgi -s/tmp/fcgiApp.socket -n /var/www/fcgiApp/fcgiApp.bin

有没有办法指示Eclipse GDB将最新的二进制文件复制到服务器,然后以上面描述的特殊方式启动应用程序,最后附加到生成的fcgi进程?

请注意,我已将“cross”和“remote”放在括号中,因为如果我在同一本地计算机上运行Eclipse和Webserver,我认为实际问题(调试生成的进程)仍然存在。

1 个答案:

答案 0 :(得分:0)

我自己找到了答案,更确切地说是fcgi特定问题的解决方法:

可以在应用程序本身内创建所需的套接字连接,就像在此代码段中一样:

#if STANDALONE
    int sockfd = FCGX_OpenSocket("/tmp/fcgiTest.socket", 1024);
    char command[] = "chmod ag+rwx /tmp/fcgiTest.socket";
    system( command );
#endif
    FCGX_Request request;
    FCGX_Init();

#if STANDALONE
    FCGX_InitRequest(&request, sockfd, 0);
#else
    FCGX_InitRequest(&request, 0, 0);
#endif

因此,对于可用于调试的独立应用程序(使用#define STANDALONE 1),套接字是作为普通用户创建的,然后出于调试目的,授予每个人写入权限,特别是 www -data 即网络服务器。

对于部署,您可以使用#define STANDALONE 0并像往常一样使用spawn-fcgi www-data 用户身份启动该过程。