【发布时间】:2015-12-31 11:26:49
【问题描述】:
c++ srand 在我运行程序时工作,但在 gdb 中不起作用。 我正在使用 Ubuntu 登录到终端。 学习 C++。 如果我只是执行它,我的程序会按预期运行。但我真的需要开始学习使用调试器。当我逐步执行程序时,对 srand 的调用会出现以下错误。
12 srand(time(NULL));
(gdb)
__srandom (x=1451559304) at random.c:210
210 random.c: No such file or directory.
(gdb)
211 in random.c
(gdb)
210 in random.c
(gdb) Quit
这是程序的第一部分,很简单。
1 #include <iostream>
2 #include <cstdlib>
3 #include <ctime>
4 #include <string>
5
6 using namespace std;
7
8
9 int main()
10 {
11 int array_size=0;
12 srand(time(NULL));
13 cout<<"\n\nWhat size of an array would you like?\n";
14 cout<<": ";
15 cin>>array_size;
16 int my_array[array_size];
17 for (int i=0;i<array_size;i++)
18 {
19 my_array[i]=(rand()%100)+1;
20 }
21 for(int i=0;i<array_size;i++)
22 {
23 cout<<"\n"<<my_array[i];
24
25 }
编译时我使用这一行。
g++ -g main.cpp -o a
当我启动调试器时,它会使用它。
gdb a
如果有任何帮助,我将不胜感激。 谢谢!
【问题讨论】:
-
旁注:对动态大小的数组使用
std::vector。 -
看来你已经进入
srand函数,你不应该这样做。跳过它。了解step和nextGDB 命令之间的区别。 -
为了详细说明错误,当您进入
srand函数时,调试器将需要加载定义srand函数的源文件,因为您没有它,您将得到一个关于它没有被发现的错误。对于库或系统文件,这通常是您可以忽略的错误。 -
太好了!谢谢!