1
生成从C程序核心可能重复:
How can a C program produce a core dump of itself without terminating?在Solaris
我想生成从C程序的芯而不终止正在运行的进程。 操作系统是Solaris。
我知道gcore可以用于此目的。但我不知道如何使用C程序中的'gcore'。
生成从C程序核心可能重复:
How can a C program produce a core dump of itself without terminating?在Solaris
我想生成从C程序的芯而不终止正在运行的进程。 操作系统是Solaris。
我知道gcore可以用于此目的。但我不知道如何使用C程序中的'gcore'。
gcore
在C中实现,源代码为available,所以显然可以复制它的功能。然而,从源头上看,它使用了半私有的库,其核心生成代码相当复杂。
这似乎是简单地使用system(3)
或它的一些变种援引gcore
最好的选择:
int gcore(pid_t pid)
{
char *cmd[256];
snprintf(cmd, sizeof cmd, "gcore %ld", (long) pid);
// returns 0 on success, -1 on system failure (errno set), or >0 on
// gcore failure (in which case use the W* macros defined in
// <sys/wait.h> to extract additional information from value).
return system(cmd);
}
这是否需要通过程序来完成?您可以在gdb中附加并运行命令generate-core-file来获取核心。 – dbeer
我不希望程序过早结束,我希望它运行,但希望在特定行中捕获内核,同时继续流动。顺便说一句,我也不能使用gdb,因为它发生在生产环境中。我只能更改代码并将exec复制到prod m/c,运行该程序并检查核心转储。 –
例如:AIX上的gencore()在http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.basetechref%2Fdoc%2Fbasetrf1%2Fgencore .htm,我正在寻找类似的solaris编程方式.. –