[英]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()
为了调试您的代码,调试器将需要一些信息(例如,可执行文件中的哪一行代码与此目标代码相对应)。
为了使此信息可用,您需要专门指示编译器(在gcc
和g++
使用-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.