GDB指向源代码中错误的当前行,编译时未进行优化
我有一个问题,GDB标记指向源中的错误行。 到目前为止,我可以说它实际上应该指向的标记前进了大约3行。 我查看了一些类似的案例,注意到优化级别可能会引入此错误,但我根本没有使用优化(甚至没有指定-O) 我的环境是: Ubuntu 14.04, Emacs 24.3.1, 通用条款4.8.2, GDB 7.7.1 我尝试调试的源代码是:GDB指向源代码中错误的当前行,编译时未进行优化,gdb,g++,Gdb,G++,我有一个问题,GDB标记指向源中的错误行。 到目前为止,我可以说它实际上应该指向的标记前进了大约3行。 我查看了一些类似的案例,注意到优化级别可能会引入此错误,但我根本没有使用优化(甚至没有指定-O) 我的环境是: Ubuntu 14.04, Emacs 24.3.1, 通用条款4.8.2, GDB 7.7.1 我尝试调试的源代码是: #line 5 "DifferentStrings.cpp" #include <string> #include <vector> #i
#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
#第5行“differentitstrings.cpp”
#包括
#包括
#包括
#包括
#定义最大值50
使用名称空间std;
类差异字符串{
公众:
int getDist(字符串A、字符串B){
断言(A.length()==B.length());
int-dist=0;
对于(无符号整数i=0;i,如n.m和Karoly所述
#line 5 "DifferentStrings.cpp"
此行导致GDB指向错误的位置#第5行“differentitstrings.cpp”
--你认为这是在做什么?最小示例发生了什么?n.m:该代码来自topcoder的默认设置。我尝试注释掉该行,但仍然不起作用。Karoly Horvath:你的意思是我应该给出较小的示例代码?因为它是由\line
指令3行引起的(main
)足以完全重现这个问题。哇,我不知道。当我注释出来时,它在返回1后仍然跳到wierd位置,所以我认为这没有效果。