我已将静态库与我的代码(.a)相关联。但是在运行时,控件在调用API时传递给库,但它永远不会返回,
ex: archived test_func.o in test.a which has implementation test_func(),
calling test_func() from main.c
Printf("inside main now")
test_func();
Printf("returned from lib - in main");
the second printf, never gets called and the message never gets displayed on the console.
有人可以提出可能存在的问题吗?
答案 0 :(得分:0)
如果它从不打印第二条消息,那么它正在退出函数(在这种情况下你的程序应该完成)或test_func()
有一个无限循环(但要记住它可能比你花费的时间更长) “我准备等了。”
在没有看到test_func()
的代码的情况下,我们无法确定问题的具体位置。
如果您没有test_func()
的源代码,那么您最好能够运行它,然后从外部引起核心转储,例如使用kill -6
。然后,您可以将可执行文件和核心文件加载到gdb
中,以尝试找出它正在做什么。
我应该强调,如果库中的对象不包含调试信息但你必须播放你所处理的卡片,这将不容易。