gpt4 book ai didi

c++ - 如何在循环后立即打断点?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:12 27 4
gpt4 key购买 nike

#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 时,什么也没有打印出来。修复后,您提供的每种方法都可以正常工作。谢谢。

最佳答案

您可以使用 assembly断点,看懂for循环的汇编代码即可。

gdb <your_bin>
layout split
break *0x80488ad #assmebly code will look like
#0x80488ad jmp 0x8048874 <main+18>

关于c++ - 如何在循环后立即打断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516380/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com