繁体   English   中英

单步执行在Eclipse CDT中不起作用

[英]Step Into Does not work in Eclipse CDT

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

因此打开了调试模式,并开始使用“ step into”按钮逐行查看执行步骤,它可以与我在main()中定义的功能一起使用(即,在本示例中进入test_function()的工作),但逐步进入不适用于我正在调用的库函数(在此示例中为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()

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

为了使此信息可用,您需要专门指示编译器(在gccg++使用-g选项)。

假设您有一个库,可以使用makefile进行编译(如您的情况)。 您需要在library的makefile中查找用于编译的标志。

CC=g++
CFLAGS=-c -Wall

然后,在标志中添加-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'选项,而不是在链接过程中(如您所做的那样)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM