c++ - GDB 在调试时多次显示行
问题描述
我正在调试一个简单的可执行文件,它附加了一个 dll。当我在执行 gdb 的“step up”选项时,我正在逐行进行,没有进入函数内部,但有时即使没有循环也没有任何 goto 语句,我看到前面的语句再次被执行,在做“加强”的同时。
我将调试会话的中间输出放在下面,谁能告诉这可能是什么问题?
19 file = getenv("DSINSTALL");
(gdb) n
20 file += "/test/rewriteshims.txt";
(gdb) n
21 FILE* fp = fopen(file.str(), "r");
(gdb)
22 if (!fp) {
(gdb)
21 FILE* fp = fopen(file.str(), "r");
(gdb)
22 if (!fp) {
(gdb)
55 if (strcmp(type, "func") == 0) {
(gdb)
如您所见,第 21,22 行再次被执行。 这也发生在其他地方。
这与我的编译方式有关吗?请建议,这使得很难正确运行代码流。
代码片段如下:
file = getenv("DSINSTALL");
file += "/test/xyz.txt";
FILE* fp = fopen(file.str(), "r");
if (!fp) {
perror(file.str());
return false;
}
char buf[200];
bool err = false;
int line = 0;
while (fgets(buf, sizeof buf, fp)) {
line++;
char* nl = strchr(buf, '\n');
if (nl) {
*nl = '\0';
}....
此外,文件已正确打开
解决方案
推荐阅读
- javascript - 如何查看外部 JS 文件的 console.logs?
- wordpress - 在 Wordpress 中的 Twig 中设置 if/ifelse 变量
- performance - 展开 1 周期循环会使 Skylake 的性能降低 25%。uops调度问题?
- r - 识别 R 中的日期时间格式
- python - 将此调用向量化为 minimize_scalar
- flutter-desktop - Flutter Desktop Windows 提示“未找到支持的设备”
- java - Selenium (firefox) 在 WebElement.Click 上挂起
- excel - 计算每周性能/Power Query
- javascript - 我如何将 Type Script 中的数字乘以 [{ count: 3, value: 2 },{ count: 7, value: 1 }] 这样的数组,使得答案是 3*2 + 7*1 = 13?
- javascript - 使用 JS 定期检查文本的有效方法