【发布时间】:2011-12-15 07:14:05
【问题描述】:
#include <iostream>
#include <vector>
using namespace std;
int in;
bool isPrime(int n) {
for (int i = 3; i <= n; i ++) {
if (n%i != 0) {
return false;
}
}
return true;
}
vector<int>* generateVector(int n) {
vector<int> v;
for (int i = 2; i < 20; i ++) {
if (i == n) {
continue;
}
if (isPrime(i+n)) {
v.push_back(i);
}
}
}
int main()
{
while(1) {
cin >> in;
vector<int>* nVectors[21];
for (int i = 1; i <= 20; i ++) {
nVectors[i] = generateVector(i);
} <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
}
这是一些 c++ 代码。我想在 for 循环之后做一个断点(箭头显示位置)。 我找到了一种解决方法,方法是在它之后添加一条语句,然后在该语句中设置断点。但是添加一个没有意义的陈述会让人感觉不好。那么有没有更好的解决方案呢?
我正在使用 GDB 进行调试。
PS:我已经知道如何在 gdb 中设置断点。我的意图是在 for 循环结束后中断,并显示 nVectors 中的内容。谢谢。
对不起。这不是 gdb 或调试技能的问题,而是我的代码中有一个错误。所以当我打印nVectors 时,什么都没有打印。修复后,您提供的每种方法都可以正常工作。谢谢。
【问题讨论】:
-
您是否尝试在关闭函数的“}”上设置断点?
-
我试过了,但是失败了。它会直接运行到main中的“}”。
-
错误是 generateVector 不返回任何内容(或者您可能会冒返回局部变量地址的风险),这两者都可以在编译时通过启用编译器警告来捕获。 - 由于 nVectors 包含指向垃圾的指针,我看不出检查它包含的内容有什么帮助。
-
是的,你是对的。我几乎为此感到羞耻。但我是一名java程序员,并尝试学习一些cpp编程技能。所以一些java学科对我影响很大。