我有这个基本程序:
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中的命令,找出存储的主存储器地址。
而且我的错误是在第4行(array [i] = i),我试图弄清楚我需要做些什么来让它运行。我的教授编写了这个程序,所以我使用这些指针可能并不是编写这个基本程序的好方法。我只需要一些见解,因为我的指针并不太好。
答案 0 :(得分:0)
在编译之前,必须使用-g
作为执行文件的保存符号链接。
如果您使用gdb a.out
,则会收到错误消息:
从TEMP读取符号...(未找到调试符号)...完成。
但如果你使用g++ -g test.cpp
,现在gdb会告诉你:
从a.out中读取符号...已完成。
现在你可以使用command-gdb
了看到这个:How to use GDB to find what function a memory address corresponds to
答案 1 :(得分:0)
我明白了,谢谢你的洞察力。我只是在GDB中使用断点来计算函数的内存分配。我没有提到我在makefile中使用了-g,所以这部分已经完成了。此外,阵列的内存分配不存在,这解决了问题!干杯