在设备上调试时,Xcode没有命中断点

时间:2013-06-20 20:06:14

标签: ios xcode debugging

我正在尝试调试某个方法,但是当我在设备上调试时,该方法中的断点永远不会受到影响,但是当我使用iOS模拟器进行调试时,它们确实受到了影响。该方法是我的应用程序调用的库的一部分,我觉得这可能是一个因素。我开发了应用程序和库,当我调试时,我在同一个工作区中打开了应用程序和库。

我在应用程序代码中调用库方法的行中放置一个断点,然后在库的第一行放置第二个断点。当我使用模拟器测试时,两者都被击中。当我在设备上测试时,只有第一个被击中,第二个被跳过(库方法的代码似乎仍在运行)。

在我在模拟器上调试时不需要做的设备上调试时,是否需要做一些特别的工作才能进入库调用?或者在库内调试是不可能的?

我很抱歉,如果这有点不清楚 - 我正在试图描述我正在做的事情,但这是我以前从未见过的非常奇怪的行为,所以它有点难以描述。如果您需要更多信息或任何不清楚的地方,请告诉我。


编辑1:我注意到一些有点不同的东西,不确定它是否已连接:我没有包含我库中方法的.h文件。实际上,只有一个方法(我称之为myMethod)将从库外部调用(然后该方法根据需要调用库中的其他方法)。此外,我正在使用TARGET_IPHONE_SIMULATOR预处理器触发器以稍微不同的方式进行调用,具体取决于它是在设备上还是在模拟器上运行。要通过我的应用程序中的按钮单击方法调用库,

#if TARGET_IPHONE_SIMULATOR
    extern void myMethod();
    myMethod();
#else
    extern void myMethod(const char diretory[], int directoryLength);
    const char *dir = [[documents path] UTF8String];
    myMethod(dir, [[documents path] length]);
#endif

我的库中的方法中有匹配的#if块以根据需要声明它,并在传入时使用dir。这似乎执行得很好。我可以告诉我的库中的代码被调用并做某事,它只是没有做我想要的。因此试图设置一个断点,以及整个问题的原因。


编辑2:我的库实际上包含普通的C代码,而不是Objective-C。我在库代码中添加了一些printf行,并且没有显示。我很好奇,如果我的应用程序以某种方式调用我的库的先前版本,而不是调用在我的工作区中打开的那个。这与我上一次编辑的“我不想做它想做的事情”是一致的。该设备是否可能尝试运行它以某种方式保存的旧版本的库?我认为在安装我的应用程序的新版本之前完全从设备中删除应用程序会阻止这种情况,但也许我错了?

0 个答案:

没有答案