GDB指向源中错误的当前行,编译时没有优化

时间:2014-12-27 09:30:31

标签: gdb g++

我遇到了这个问题,其中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

1 个答案:

答案 0 :(得分:1)

正如n.m和Karoly所说,

#line 5 "DifferentStrings.cpp"

此行导致GDB指向错误的位置