繁体   English   中英

我运行程序时c ++ srand有效,但在gdb中不起作用

[英]c++ srand works when I run the program but doesn't work in gdb

当我运行程序时,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

我将不胜感激任何帮助。 谢谢!

您将进入标准库资源。 假设您确实拥有源,则可以设置gdb以使用dirset directories查找它们。 但是大多数人没有C标准库的源代码-除非您实际上是在调试标准库代码本身,否则我建议使用n (下一个)命令而不是s (步骤)来逐步覆盖srand

请注意,您得到的错误仅仅是gdb找不到srand的源文件。 它最终仍将逐步执行该功能-但是将需要一些步骤,并且如果没有源代码来查看其功能,这是毫无意义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM