我正在尝试用C语言编写程序(在Linux 64bit中使用GCC 4.1.2)。
int program_instances(char *cmdname)
{
char buf[32], *ret;
char cmdbuf[512];
FILE *cmdpipe;
sprintf(cmdbuf, "/bin/ps -eo comm | /bin/grep -c '%s'",
cmdname);
cmdpipe = popen(cmdbuf, "r");
if (!cmdpipe)
{
return -1;
}
memset(buf, 0, sizeof(buf));
ret = fgets(buf, sizeof(buf), cmdpipe);
pclose(cmdpipe);
if (!ret)
{
return -1;
}
int nr = atoi(buf);
return nr;
}
尝试通过gdb调试问题,但在行
之后sprintf(cmdbuf, "/bin/ps -eo comm | /bin/grep -c '%'",cmdname);
该程序没有越过上面的行,抛出下面的行..
Executing new program: /bin/bash Error in re-setting breakpoint 1: No symbol table is loaded. Use the "file" command. [New process 2437] Executing new program: /bin/ps
请帮助我们解决此问题。
答案 0 :(得分:3)
尝试使用-g编译代码并删除-O [编译器标志]。优化编译器(gcc)时改变指令顺序以提高速度。重新编译后再次附加调试器。