我遇到了这个问题,其中GDB标记指向源中的错误行。 到目前为止,我可以告诉它实际上应该指向的标记大约提前3行。 我查看了一些类似的情况并注意到优化级别可能会引入此错误,但我根本没有使用优化(甚至没有指定-O)。
我的环境是: Ubuntu 14.04, Emacs 24.3.1, GCC 4.8.2, GDB 7.7.1
我试图调试的源代码是:
#line 5 "DifferentStrings.cpp"
#include <string>
#include <vector>
#include <cassert>
#include <iostream>
#define MAX 50
using namespace std;
class DifferentStrings {
public:
int getDist(string A, string B) {
assert(A.length()==B.length());
int dist=0;
for(unsigned int i=0; i<A.length(); i++)
if (A[i]!=B[i])
dist++;
return dist;
}
int minimize(string A, string B) {
int minDist=MAX;
for(unsigned int i=0; i<B.length()-A.length(); i++) {
string subB = B.string::substr(i,A.length());
int thisDist = getDist(A,subB);
if (minDist > thisDist)
minDist = thisDist;
}
return A.length()-minDist;
}
};
int main() {
string s1("koder");
string s2("topcoder");
DifferentStrings ds;
int i = ds.minimize(s1, s2);
cout << i << endl;
return 1;
}
// Powered by FileEdit
答案 0 :(得分:1)
正如n.m和Karoly所说,
#line 5 "DifferentStrings.cpp"
此行导致GDB指向错误的位置