1

我今天在使用 Eclipse 时遇到了一些我无法解释的事情。

基本上,当我尝试调试一个在结束前写入标准输出的函数时,Eclipse 将不会从该函数返回,并将在那里停止调试。(只要最后写入标准输出,该函数就可以做其他事情。)

导致意外行为的程序将是,例如:

#include <stdio.h>

void testfunc(void)
{
    puts("I hate you ");

}

int main(void)
{
    testfunc();

    printf("so, so much.");
    return 3;
}

在这种情况下,它还在堆栈跟踪中显示了一些奇怪的内存位置。

printf 也会导致相同的行为。值得一提的是,当我跨过函数时不会发生这种情况,只有当我跟踪它时才会发生这种情况,这似乎指向了一个不是来自我显示的代码的问题。

将功能更改为:

void testfunc(void)
{
    int a;
    a=3;
    puts("I hate you ");

}

获取发送到进程的 SIGSEGV 信号,同时:

void testfunc(void)
{
    int a;

    puts("I hate you ");
    a=3;
}

工作没有问题。

正如我所说,单步执行函数或仅运行程序(而不是调试)工作正常,使用 gcc 手动编译并在终端上运行程序也是如此。

我正在运行 Fedora 19,Eclipse 是版本:4.3.1,构建 id:5fc19

有任何想法吗?

4

0 回答 0