gdb -ex command 可以执行单个gdb命令,多个命令则跟多个 -ex command,如:
这个可以用在哪里呢?结合c/c++ 代码,可以用在execv() 系函数调用里的参数传递,如:
const char *argv[] = {"gdb", "--nx", "--batch", "--readnever",
"-ex", "set pagination off",
"-ex", "set height 0",
"-ex", "set width 0",
"-ex", attach,
"-ex", gcore,
"-ex", "detach",
"-ex", "quit",
nullptr};
execv(gdb, (char **)argv);
使用场景:fork() 一个子进程来调用 execv() 函数来启用gdb,然后attach 到父进程(如父进程发生段错误)上,再强制生成 coredump 文件,最后detach 和 退出。