我可以使用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,我认为实际问题(调试生成的进程)仍然存在。
答案 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 用户身份启动该过程。