[英]gdb run program questions
需要调试的程序:~/bin/tryIt(生成:gcc -g -Wall -o try try.c) gdb 版本:GNU gdb (GDB) 8.3
在为所有试验设置相同的断点后运行程序 tryIt 的问题: 1. 有不同的 bash 运行 tryIT,有时它是 OS(MAC OS 最新版本) bash: ~/bin/tryIt
有时它是 GDB bash:~/Library/Caches/gdb/bin/bash。
Q:为什么GDB使用不同的bash来处理程序? 如何控制/选择一个运行?
Q:断点停不下来是什么原因
在网上搜索了所有解决方案(包括 stackoverflow.com),都没有奏效。 虽然不尝试一种更改 gdb 源代码的解决方案。
tryIt.c 的源代码
#include <stdio.h>
#include <stdlib.h>
typedef struct node NODE;
struct node
{
int x;
char *name;
NODE *next;
};
NODE *getNext(NODE *stNode)
{
return stNode->next;
}
int main()
{
NODE n1, n2, n3;
n1.x = 5;
n1.name = "n1";
n1.next = &n2;
n2.x = 10;
n2.name = "n2";
n2.next = &n3;
n3.x = 20;
n3.name = "n3";
n3.next = NULL;
struct node *nx = getNext(&n1);
printf("Current Node:%s, its value:%d\n", nx->name, nx->x);
NODE *ptr = &n1;
while (ptr != NULL)
{
printf("Current Node:%s, its value:%d\n", ptr->name, ptr->x);
ptr = ptr->next;
}
return 0;
}
我自己找出了如何回答 Q1。
编辑 ~/.gdbinit 文件。 如果它不存在,请创建它。 添加一行:set startup-with-shell disable
然后重新运行gdb,它会一直显示进程~/bin/tryIt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.