我可以用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和put服务器,实际问题(调试衍生的进程)仍然存在。
发布于 2016-11-06 05:07:45
我自己找到了一个答案,更确切地说是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,即web服务器。
对于部署,您将使用#define STANDALONE 0,并像往常一样使用spawn-fcgi以www-data用户身份启动进程。
https://stackoverflow.com/questions/40441547
复制相似问题