控制进入静态库(.a)并永不返回

时间:2011-09-23 13:41:04

标签: c linux

我已将静态库与我的代码(.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. 

有人可以提出可能存在的问题吗?

1 个答案:

答案 0 :(得分:0)

如果它从不打印第二条消息,那么它正在退出函数(在这种情况下你的程序应该完成)或test_func()有一个无限循环(但要记住它可能比你花费的时间更长) “我准备等了。”

在没有看到test_func()的代码的情况下,我们无法确定问题的具体位置。

如果您没有test_func()的源代码,那么您最好能够运行它,然后从外部引起核心转储,例如使用kill -6。然后,您可以将可执行文件和核心文件加载到gdb中,以尝试找出它正在做什么。

我应该强调,如果库中的对象不包含调试信息但你必须播放你所处理的卡片,这将不容易。