Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ XCode调试器lldb中断而没有错误输出,但程序工作正常_C++_Objective C_Xcode_Lldb - Fatal编程技术网

C++ XCode调试器lldb中断而没有错误输出,但程序工作正常

C++ XCode调试器lldb中断而没有错误输出,但程序工作正常,c++,objective-c,xcode,lldb,C++,Objective C,Xcode,Lldb,我最近在我的项目中有一个奇怪的行为。 它使用Objective-C作为输出,但大多数核心是C++11。多个C++例程仅在头文件内作为内联。该应用程序正在通过berkley套接字与服务器通信。此外,该应用程序在模拟器和实际设备上运行良好。我的日志正常,应用程序按预期运行。。。 …只要我不使用XCode调试器 调试器总是在我发送keep alive的同一行代码中中断。这是由第二个线程完成的。如果我注释掉这一行,它将停在下一行。如果我在方法的开头直接放一个return,它会在return处停止,顺便说

我最近在我的项目中有一个奇怪的行为。 它使用Objective-C作为输出,但大多数核心是C++11。多个C++例程仅在头文件内作为内联。该应用程序正在通过berkley套接字与服务器通信。此外,该应用程序在模拟器和实际设备上运行良好。我的日志正常,应用程序按预期运行。。。 …只要我不使用XCode调试器

调试器总是在我发送keep alive的同一行代码中中断。这是由第二个线程完成的。如果我注释掉这一行,它将停在下一行。如果我在方法的开头直接放一个return,它会在return处停止,顺便说一句,它是一个内联方法。如果我注释掉该调用,它将在我使用该方法的下一个地方停止。如果我点击continue,应用程序将按预期工作,直到下一个调用发生。 在“日志”窗口中,“我的日志”之后只有一个输出:

lldb

我已经尝试清理我的应用程序~library/developer/xcode并重新启动所有应用程序。没有效果

不幸的是,我没有办法用一个小样本重现这个问题


我的问题是,有没有人面临类似的问题?有没有办法获取lldb导致停止的信息?

我在重新整理代码后发现了问题,因为我认为这可能是调用堆栈的损坏

听起来很尴尬,但这是一个断点!问题是,它不可见。每个调试人员都知道在一行中设置断点的情况,如果无法设置断点,断点将滑到下一个逻辑位置。此位置始终在您设置的方法内。 随着C++11和内联方法调用内联方法,这条规则似乎不再牢不可破。断点不在定义和第一个内联方法之间的有效代码区域中。根据首先编译的方法,断点似乎在一些常规代码中被移动。清除应用缓存并没有消除断点。不幸的是,当然lldb并没有告诉您它是因为您设置的断点而中断的

Jason Molenda写了以下评论,这将有助于其他面临类似问题的人,我在回答中补充说,因为不是每个人都阅读这些评论:

尝试在lldb提示符或线程列表中键入线程信息。这将 显示每个线程的停止原因。e、 g.如果你撞到了 断点,它会这样说。如果我附加到一个暂停的进程 它,它会说停止。我不知道你会说什么,但可能会 帮助理解正在发生的事情


尝试在lldb提示符或线程列表中键入线程信息。这将显示每个线程的停止原因。e、 如果你碰到一个断点,它会这样说。如果我附加到一个暂停它的进程,它会说SIGSTOP。我不知道你会说什么,但这可能有助于理解正在发生的事情。@这将在下次派上用场:-我找到了原因并将回答我的问题。