【发布时间】:2017-05-15 16:13:03
【问题描述】:
我有一段 C 代码正在尝试使用 lldb 进行调试。我正在尝试在代码中的某一行设置断点,但我的代码中的行号与 lldb 所在的位置不匹配。
我可以看到它不计算空行、带有命令的行、带有变量声明的行、带有#include 语句的行等,但我无法通过尝试设置来使 lldb 落在某一行上不同行的断点。下面是代码相关部分的草图。 请注意,因为太长了,所以不能发全篇,而且不是我写的,所以没有权限分享。
#include <stdio.h>
...
#include ...
// global var declarations
double X;
...
int ind;
int main()
{
// variable declarations
int a, b, c, i, j, N, Nc;
...
double x, y, z;
// some initializations and calculations
a = 19;
b = 10;
c = a + b;
// one for loop doing some calculations
for (i=0; i<N; i++){
// some calculations here
a += c;
}
double En; // more var declarations
myFunc(&(En));
printf("hello world\n");
// more declarations
file = fopen("file1.dat","w");
for(j=1; j<3; j++)
{
Nc = j;
}
// rest of the code
}
我想在包含myFunc(&(En)); 的行设置一个断点,即我原始代码中的第 130 行。但是当我在 130 处设置断点并运行程序时,它会落在Nc = j;。如果我尝试将断点设置为 129、128、127 等,我要么在同一行结束,要么在第一个 for 循环的右花括号之后的行结束。
为什么会发生这种情况,我怎么会出现在包含 myFunc(&(En)); 的行中?
【问题讨论】:
-
你用调试信息编译了吗?你确定调试器有正确的源文件可用吗?
-
@EOF 是的,我只使用
-g标志进行编译。我注意到添加注释行后我没有重新编译。我重新编译,它现在工作。谢谢!