我有一个基本的程序:
int initfunc(int *array, int len) {
int i;
for(i=1; i <= len; i++) {
array[i] = i;
}
return 0;
}
int main(int argc, char* argv[]){
int* myarray=0;
initfunc(myarray,10);
}首先,我试着找出GDB中用来查找main存储在哪个内存地址中的命令。
而且我的错误是在第4行(arrayi = i),我试图找出我需要做什么才能让它运行。我的教授写了这个程序,所以我知道使用这些指针可能不是编写这个基本程序的好方法。我只是需要一些洞察力,因为我不太擅长指针。
发布于 2016-04-08 00:09:08
在编译之前,必须使用-g保存指向执行文件的符号链接。
如果你使用gdb a.out,你会得到错误:
正在从临时读取符号...(找不到调试符号)...done。
但是如果您使用g++ -g test.cpp,而现在使用gdb,您将看到:
从a.out...done读取符号的
。
现在您可以使用命令-gdb
看看这个:How to use GDB to find what function a memory address corresponds to
发布于 2016-04-08 00:23:37
我想通了,谢谢你的洞察。我只是在GDB中使用断点来计算函数的内存分配。我没有提到我在makefile中使用了-g,所以这部分已经完成了。另外,数组的内存分配不存在,这解决了这个问题!干杯
https://stackoverflow.com/questions/36481279
复制相似问题