gpt4 book ai didi

在 Eclipse 中到达 "printf"时无法继续进入 Debug模式

转载 作者:行者123 更新时间:2023-12-05 01:33:01 25 4
gpt4 key购买 nike

我正在尝试使用下一个代码在 eclipse 中调试 c:

void print_clause(SAT_clause * c) {
int l_index;
printf("(");
for (l_index = 0; l_index < c->literal_count; l_index++) {
print_literal(c->literal_arr[l_index]);
if(l_index != c->literal_count - 1){
printf(" v ");
}
}
printf(")");
}

但每次我到达 "printf("(");"(此函数中的第一个打印)时,我都会在控制台中收到下一条消息:
(*stopped,reason="end-stepping-range"... 然后我不能再一步了。我假设这是 dbg eclipse 没有的消息解析得很好。我在某处读到我需要在 printf 函数的末尾添加 \n - 这确实有效,但我需要 printf 最后没有 \n。如果我在 Release模式下运行 - 打印正常。
我做错了什么以及如何在 printf 之后继续步进?

更新 好的 - 我发现了导致这种行为的原因(但我仍然有问题) - 这是因为这个链接:printf not printing on console .我添加了 setbuf(stdout, NULL);用于在调试中启用打印但我不能一步。如果我删除这个 setbuf(stdout, NULL);由于缓冲区的原因,我在 Debug模式下看不到 printf(但我可以继续步进)。 有什么建议

最佳答案

如果您按照链接所在位置列出的链接和答案进行操作,您最终会到达:https://bugs.eclipse.org/bugs/show_bug.cgi?id=173732归类为“不会修复”。

因此,如果这真的困扰您,我的建议是在 Windows 上使用 Eclipse CDT 以外的其他东西,或者切换到 Eclipse CDT 可以正常运行的 POSIX 系统(Unix/Linux/BSD/Solaris...)。

另一个建议是尝试修复 Eclipse CDT,但我猜这并不容易,否则他们自己已经这样做了。 Windows 本身似乎缺少 CDT 控制台所依赖的“伪终端”功能。

我可以想到在 Eclipse CDT 中修复此问题:在 Debug模式下使用未缓冲的标准输出注入(inject)您自己的 c-runtime 调试库。我想这可以通过 Windows 等效的 LD_PRELOAD 来完成(尽管我不知道这在 Windows 世界中是什么样子,甚至不知道它是否可行)。

关于在 Eclipse 中到达 "printf"时无法继续进入 Debug模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17387950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com