69,373
社区成员
发帖
与我相关
我的任务
分享
void dump(int signo)
{
long now=Time();
printf("This is DUMP %d-------------------------\n",now);
char buf[1024];
char cmd[1024];
FILE *fh;
snprintf(buf, sizeof(buf), "/proc/%d/cmdline", getpid());
if(!(fh = fopen(buf, "r")))
exit(0);
if(!fgets(buf, sizeof(buf), fh))
exit(0);
fclose(fh);
if(buf[strlen(buf) - 1] == '\n')
buf[strlen(buf) - 1] = '\0';
snprintf(cmd, sizeof(cmd), "gdb %s %d", buf, getpid());
system(cmd);
//dolog(cmd);
printf("This is DUMP -------------------------\n");
ctMeme++;
exit(0);
}
#define malloc malloc_proxy(__FILE__ , __LINE__)
malloc_f
malloc_proxy(const char *filename, int line)
{
g_filename = filename;
g_line = line;
return malloc;
}
void dump(int signo)
{
long now=Time();
printf("This is DUMP %d-------------------------\n",now);
char buf[1024];
char cmd[1024];
FILE *fh;
snprintf(buf, sizeof(buf), "/proc/%d/cmdline", getpid());
if(!(fh = fopen(buf, "r")))
exit(0);
//可能因大于1024越界
if(!fgets(buf, sizeof(buf), fh))
exit(0);
fclose(fh);
// buf[strlen(buf) - 1] == '\n'不正确吧?
//C语言以'\0'作为字符串结束标记
//此处也有可能越界!!
if(buf[strlen(buf) - 1] == '\n')
buf[strlen(buf) - 1] = '\0';
snprintf(cmd, sizeof(cmd), "gdb %s %d", buf, getpid());
system(cmd);
//dolog(cmd);
printf("This is DUMP -------------------------\n");
ctMeme++;
exit(0);
}