Step Into在Eclipse CDT中不起作用

时间:2013-06-14 16:36:48

标签: c eclipse debugging static-libraries step-into

我在Ubuntu OS中使用eclipse CDT并创建了一个带有外部静态库(libtomcrypt)的C项目。它运行并正确输出,但我想知道库函数的定义,函数的调用层次结构及其实现。

因此打开调试模式并开始逐行查看执行步骤,使用"步入"按钮,它与我在main()中定义的函数一起工作(即,在本例中步入test_function()的工作)但是step into不适用于我调用的库函数(register_hash(&) sha256_desc)& find_hash(" sha256")在此示例中起作用)。

它只是跳过线而没有踩到并移动到下一行。请帮我解决这个问题。

   int main()
    {
    /* some code initialization */

            double sha_elapsed;

                /* register hashes .... */
                if ((err=register_hash(&sha256_desc)) == -1) {
                    printf("Error registering MD5.\n");
                    return -1;
                }

                /* get hash index */
                indx = find_hash("sha256");
                if (indx == -1) {
                    printf("Invalid hash name!\n");
                    return -1;
                }
            printf("something");
            test_function() {
                //code for the function
            }
       //remaining code
}//end of main()

1 个答案:

答案 0 :(得分:0)

为了调试代码,调试器需要一些信息(例如,哪行代码对应 到此目标代码,在可执行文件中)。

要使此信息可用,您需要专门指导您的编译器(使用-g选项 gcc& g++)。

假设您有一个库,您可以使用makefile进行编译(如您的情况)。你需要看一下 用于编译的标志的的makefile。如,

CC=g++
CFLAGS=-c -Wall

然后,在flags中添加-g选项:

CFLAGS=-c -Wall -g

(注意,您的makefile不使用CFLAGS,您需要查找编译发生的行 并手动将-g选项添加到所有这些行。

然后make你的图书馆。现在,您可以编译这样的测试程序:

gcc -I/home/xxx/Documents/libtomcrypt-1.17/src/headers -c -g Tomcrypt_SHA-256_Bmark.c jg_timing.c -ltomcrypt
gcc -I/home/xxx/Documents/libtomcrypt-1.17/src/headers Tomcrypt_SHA-256_Bmark.o jg_timing.o -o executable -ltomcrypt 

修改: 另请注意,编译期间应包含'-g'选项,而不是在链接期间(如您所做)。