【问题标题】:iPhone Dev: Xcode debugger does not stop on breakpointsiPhone Dev:Xcode 调试器不会在断点处停止
【发布时间】:2010-10-10 17:14:19
【问题描述】:

我在 OS X 10.5.5 上安装了 Xcode 3.1.2。我有一个构建良好的 iPhone 项目,但调试器不会命中我设置的任何断点。我已经尝试了我在网上找到的所有标准修复:

  1. 我在 Xcode 首选项中关闭了“懒加载符号”
  2. 我的活动配置是调试
  3. 构建设置中的优化级别为 0
  4. 我已经清理了所有目标并重建了
  5. 我使用 Build and Debug(而不是 Build and Run)

我认为我可能无意中调整了项目的设置。所以我创建了一个新项目,那个项目也有同样的问题。

我希望我在这里遗漏了一些简单的东西。我的调试器几天前还在工作,但突然停止了。


更新:

事情变得越来越陌生。以下是回复的一些答案

  1. 我在任何地方都找不到“GCC 4.0 - 代码生成”选项。在 Target 和 Executable Info 页面中,我看起来既好又低。我看到的唯一选项是选择编译器版本,并选择了 GCC 4.0,但这是一个没有额外选项的单行部分。
  2. 关于放置断点的位置:我目前唯一的断点在 main() 中,并且没有被命中
  3. 我正在使用 Run -> Debug (/% Y) 命令启动调试器。还是没有运气

更新 2:

  1. 将目标设置中的 Base SDK 更改为 Sim 2.2.1。将 Active SDK 更改为 Sim 2.2.1。
  2. 现在我可以看到 GCC 4.0 代码生成选项 - 已检查调试符号
  3. 仍然没有遇到断点

这里是控制台日志(断点设置在 main.m 的第一行):

[Session started at 2009-03-06 21:29:19 -0600.]
Loading program into debugger…
GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".warning: Unable to read symbols for "/System/Library/Frameworks/UIKit.framework/UIKit" (file not found).
warning: Unable to read symbols from "UIKit" (not yet mapped into memory).
warning: Unable to read symbols for "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics" (file not found).
warning: Unable to read symbols from "CoreGraphics" (not yet mapped into memory).
Program loaded.
sharedlibrary apply-load-rules all
Attaching to program: `/private/var/root/Library/Application Support/iPhone Simulator/User/Applications/753D12B3-777C-473B-B098-3E0AF6282545/TestApp.app/TestApp', process 577.
Re-enabling shared library breakpoint 1

这里还有 gdb 日志:

t=0.000852 Tepoch=1236463545.631514
<- (gdb) 
-> 135-gdb-version
#  PBXGDB_MIGDBVersionCommand t=4.308986 Tepoch=1236463549.939648
-> 136-gdb-set auto-raise-load-levels 1
#  PBXGDB_MISetAutoRaiseSymbols t=4.309420 Tepoch=1236463549.940082
-> 139-gdb-set env __CF_USER_TEXT_ENCODING 0x0:0:0
#  PBXGDB_MISetEnvCommand t=4.309702 Tepoch=1236463549.940364
-> 140-gdb-set env USERBREAK 1
#  PBXGDB_MISetEnvCommand t=4.309935 Tepoch=1236463549.940598
-> 141-gdb-set env DYLD_FRAMEWORK_PATH /Projects/TestApp/build/Debug-iphonesimulator
#  PBXGDB_MISetEnvCommand t=4.310175 Tepoch=1236463549.940837
-> 142-gdb-set env Apple_PubSub_Socket_Render /tmp/launch-GqkpX5/Render
#  PBXGDB_MISetEnvCommand t=4.310568 Tepoch=1236463549.941231
-> 143-gdb-set env SECURITYSESSIONID 715cd0
#  PBXGDB_MISetEnvCommand t=4.310803 Tepoch=1236463549.941465
-> 144-gdb-set env DYLD_LIBRARY_PATH /Projects/TestApp/build/Debug-iphonesimulator
#  PBXGDB_MISetEnvCommand t=4.311040 Tepoch=1236463549.941702
-> 145-gdb-set env SSH_AUTH_SOCK /tmp/launch-hRgLzb/Listeners
#  PBXGDB_MISetEnvCommand t=4.311299 Tepoch=1236463549.941961
-> 146-gdb-set env HOME /var/root
#  PBXGDB_MISetEnvCommand t=4.311587 Tepoch=1236463549.942250
-> 147-gdb-set env SHELL /bin/sh
#  PBXGDB_MISetEnvCommand t=4.311818 Tepoch=1236463549.942480
-> 148-gdb-set env DYLD_NO_FIX_PREBINDING YES
#  PBXGDB_MISetEnvCommand t=4.312048 Tepoch=1236463549.942710
-> 149-gdb-set env COMMAND_MODE unix2003
#  PBXGDB_MISetEnvCommand t=4.312281 Tepoch=1236463549.942943
-> 150-gdb-set env DYLD_NEW_LOCAL_SHARED_REGIONS YES
#  PBXGDB_MISetEnvCommand t=4.312546 Tepoch=1236463549.943209
-> 151-gdb-set env SSH_ASKPASS /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/Xcode SSHPassKey
#  PBXGDB_MISetEnvCommand t=4.312780 Tepoch=1236463549.943443
-> 152-gdb-set env PATH /Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin
#  PBXGDB_MISetEnvCommand t=4.313612 Tepoch=1236463549.944275
-> 153-gdb-set env DISPLAY /tmp/launch-yrv3vV/:0
#  PBXGDB_MISetEnvCommand t=4.313849 Tepoch=1236463549.944512
-> 154-gdb-set env USER root
#  PBXGDB_MISetEnvCommand t=4.314141 Tepoch=1236463549.944803
-> 155-gdb-set env NSUnbufferedIO YES
#  PBXGDB_MISetEnvCommand t=4.314377 Tepoch=1236463549.945039
#  Enqueue seq in Command Q: <PBXGDB_SetupSharedLibrarySequence: 0x9049db0> t=4.314625 Tepoch=1236463549.945288
#  Executing Sequence: <PBXGDB_SetupSharedLibrarySequence: 0x9049db0> t=4.314718 Tepoch=1236463549.945380
-> 157-gdb-set inferior-auto-start-cfm off
#  PBXGDB_MISetLoadCFMInfoCommand t=4.314895 Tepoch=1236463549.945557
-> 156-gdb-set sharedLibrary load-rules dyld ".*Foundation.*" all dyld ".*libobjc.*" all dyld ".*libauto.*" all dyld ".*/usr/lib/dyld.*" all dyld ".*CFDataFormatters.*" all dyld ".*PBGDBIntrospectionSupport.*" all dyld ".*AppKit.*" all dyld ".*libSystem.*" all dyld ".*CarbonDataFormatters.*" all dyld ".*CoreFoundation.*" extern dyld "/System/Library/Frameworks\\\\|/System/Library/PrivateFrameworks\\\\|/usr/lib" extern dyld ".*" extern exec ".*" extern 
#  PBXGDB_MISetSharedLibraryLoadSymbolsCommand t=4.315975 Tepoch=1236463549.946637
-> 137-file-exec-and-symbols "/private/var/root/Library/Application Support/iPhone Simulator/User/Applications/09734C45-F595-4CB9-8707-744E92D66245/TestApp.app/TestApp"
#  PBXGDB_MILoadExecutableCommand t=4.320612 Tepoch=1236463549.951275
#  Enqueue seq in Command Q: <PBXGDB_FixAndContinueIsSupportedSequence: 0x9bdc260> t=4.321476 Tepoch=1236463549.952138
#  Enqueue seq in Command Q: <PBXGDB_NewBreakpointSequence: 0xa516f90> t=4.321941 Tepoch=1236463549.952603
#  Enqueue seq in Command Q: <PBXGDB_AttachControlSequence: 0xa4fceb0> t=4.322157 Tepoch=1236463549.952820
<- ~"GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)\n"
<- ~"Copyright 2004 Free Software Foundation, Inc.\n"
<- ~"GDB is free software, covered by the GNU General Public License, and you are\nwelcome to change it and/or distribute copies of it under certain conditions.\nType \"show copying\" to see the conditions.\nThere is absolutely no warranty for GDB.  Type \"show warranty\" for details.\n"
<- ~"This GDB was configured as \"i386-apple-darwin\"."
<- 135^done,version="6.3.50-20050815 (Apple version gdb-962)",rc_version="962",target="i386-apple-darwin",build-date="Sat Jul 26 08:14:40 UTC 2008",time={wallclock="0.03311",user="0.00081",system="0.00014",start="1236463549.989179",end="1236463550.022291"}
#  processing result t=4.392345 Tepoch=1236463550.023007
<- (gdb) 
<- 136^done,time={wallclock="0.00005",user="0.00005",system="0.00001",start="1236463550.024272",end="1236463550.024325"}
#  processing result t=4.394163 Tepoch=1236463550.024826
<- (gdb) 
<- 139^done,time={wallclock="0.00007",user="0.00005",system="0.00002",start="1236463550.025511",end="1236463550.025581"}
#  processing result t=4.395347 Tepoch=1236463550.026010
<- (gdb) 
<- 140^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.026564",end="1236463550.026597"}
#  processing result t=4.396328 Tepoch=1236463550.026991
<- (gdb) 
<- 141^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.027857",end="1236463550.027890"}
#  processing result t=4.397653 Tepoch=1236463550.028315
<- (gdb) 
<- 142^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.029080",end="1236463550.029113"}
#  processing result t=4.398865 Tepoch=1236463550.029528
<- (gdb) 
<- 143^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.030126",end="1236463550.030159"}
#  processing result t=4.399923 Tepoch=1236463550.030585
<- (gdb) 
<- 144^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.031449",end="1236463550.031482"}
#  processing result t=4.401855 Tepoch=1236463550.032518
<- (gdb) 
<- 145^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.033257",end="1236463550.033291"}
#  processing result t=4.403022 Tepoch=1236463550.033685
<- (gdb) 
<- 146^done,time={wallclock="0.00006",user="0.00003",system="0.00002",start="1236463550.034226",end="1236463550.034287"}
#  processing result t=4.404018 Tepoch=1236463550.034680
<- (gdb) 
<- 147^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.035215",end="1236463550.035247"}
#  processing result t=4.405007 Tepoch=1236463550.035670
<- (gdb) 
<- 148^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.036306",end="1236463550.036340"}
#  processing result t=4.406068 Tepoch=1236463550.036731
<- (gdb) 
<- 149^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.037344",end="1236463550.037377"}
#  processing result t=4.407107 Tepoch=1236463550.037770
<- (gdb) 
<- 150^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.038448",end="1236463550.038483"}
#  processing result t=4.408214 Tepoch=1236463550.038876
<- (gdb) 
<- 151^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.040541",end="1236463550.040576"}
#  processing result t=4.410438 Tepoch=1236463550.041101
<- (gdb) 
<- 152^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.041901",end="1236463550.041933"}
#  processing result t=4.411665 Tepoch=1236463550.042327
<- (gdb) 
<- 153^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.042984",end="1236463550.043016"}
#  processing result t=4.412784 Tepoch=1236463550.043446
<- (gdb) 
<- 154^done,time={wallclock="0.00003",user="0.00002",system="0.00001",start="1236463550.043956",end="1236463550.043988"}
#  processing result t=4.413717 Tepoch=1236463550.044379
<- (gdb) 
<- 155^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.044974",end="1236463550.045007"}
#  processing result t=4.414737 Tepoch=1236463550.045400
<- (gdb) 
<- 157^done,time={wallclock="0.00003",user="0.00003",system="0.00001",start="1236463550.046108",end="1236463550.046141"}
#  processing result t=4.415931 Tepoch=1236463550.046594
<- (gdb) 
<- 156^done,time={wallclock="0.00005",user="0.00005",system="0.00001",start="1236463550.050271",end="1236463550.050324"}
#  processing result t=4.420235 Tepoch=1236463550.050897
-> 158sharedlibrary apply-load-rules all
#  PBXGDB_MISharedLibraryApplyLoadRulesCommand t=4.420386 Tepoch=1236463550.051049
<- (gdb) 
<- &"warning: Unable to read symbols for \"/System/Library/Frameworks/UIKit.framework/UIKit\" (file not found).\n"
<- &"warning: Unable to read symbols from \"UIKit\" (not yet mapped into memory).\n"
<- &"warning: Unable to read symbols for \"/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics\" (file not found).\n"
<- &"warning: Unable to read symbols from \"CoreGraphics\" (not yet mapped into memory).\n"
<- 137^done,time={wallclock="0.34917",user="0.17115",system="0.11409",start="1236463550.052577",end="1236463550.401747"}
#  processing result t=4.771918 Tepoch=1236463550.402580
<- (gdb) 
<- &"sharedlibrary apply-load-rules all\n"
<- 158^done
#  processing result t=4.820019 Tepoch=1236463550.450681
#  didFinish Sequence: <PBXGDB_SetupSharedLibrarySequence: 0x9049db0> t=4.820135 Tepoch=1236463550.450797
#  Executing Sequence: <PBXGDB_FixAndContinueIsSupportedSequence: 0x9bdc260> t=4.820259 Tepoch=1236463550.450921
-> 159-mi-verify-command file-fix-file-is-grooved
#  PBXGDB_MIVerifyCommandCommand t=4.820398 Tepoch=1236463550.451060
<- (gdb) 
<- 159^done,name="file-fix-file-is-grooved",defined="true",implemented="true",time={wallclock="0.00011",user="0.00007",system="0.00001",start="1236463550.451848",end="1236463550.451955"}
#  processing result t=4.821746 Tepoch=1236463550.452409
-> 160-file-fix-file-is-grooved
#  PBXGDB_MIFixAndContinueSupportedCommand t=4.821894 Tepoch=1236463550.452556
<- (gdb) 
<- 160^done,supported="1",details="Yes grooved!",time={wallclock="0.00006",user="0.00005",system="0.00002",start="1236463550.453356",end="1236463550.453417"}
#  processing result t=4.823203 Tepoch=1236463550.453865
#  didFinish Sequence: <PBXGDB_FixAndContinueIsSupportedSequence: 0x9bdc260> t=4.823344 Tepoch=1236463550.454006
#  Executing Sequence: <PBXGDB_NewBreakpointSequence: 0xa516f90> t=4.823433 Tepoch=1236463550.454095
#  Passed verification of state before break create command t=4.823569 Tepoch=1236463550.454231
-> 161-break-insert -l -1 -f  -s "TestApp" "\"main.m:13\""
#  PBXGDB_MICreateFileBreakpointCommand t=4.823679 Tepoch=1236463550.454342
<- (gdb) 
<- =shlib-state-modified,shlib-info=[num="1",name="TestApp",kind="-",dyld-addr="-",reason="exec",requested-state="Y",state="Y",path="/private/var/root/Library/Application Support/iPhone Simulator/User/Applications/09734C45-F595-4CB9-8707-744E92D66245/TestApp.app/TestApp",description="/private/var/root/Library/Application Support/iPhone Simulator/User/Applications/09734C45-F595-4CB9-8707-744E92D66245/TestApp.app/TestApp",loaded_addr="",slide="0x0",prefix="",dsym-objpath="/Projects/TestApp/build/Debug-iphonesimulator/TestApp.app.dSYM/Contents/Resources/DWARF/TestApp"]
<- 161^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x000028cf",func="main",file="/Projects/TestApp/main.m",line="13",shlib="/private/var/root/Library/Application Support/iPhone Simulator/User/Applications/09734C45-F595-4CB9-8707-744E92D66245/TestApp.app/TestApp",times="0"},time={wallclock="0.15835",user="0.00321",system="0.00184",start="1236463550.455187",end="1236463550.613542"}
#  processing result t=4.996437 Tepoch=1236463550.627100
#  didFinish Sequence: <PBXGDB_NewBreakpointSequence: 0xa516f90> t=4.996599 Tepoch=1236463550.627262
#  Executing Sequence: <PBXGDB_AttachControlSequence: 0xa4fceb0> t=4.996690 Tepoch=1236463550.627352
-> 162-mi-verify-command target-attach
#  PBXGDB_MIVerifyCommandCommand t=4.996824 Tepoch=1236463550.627486
<- (gdb) 
<- 162^done,name="target-attach",defined="true",implemented="true",time={wallclock="0.00007",user="0.00006",system="0.00001",start="1236463550.627975",end="1236463550.628046"}
#  processing result t=4.998137 Tepoch=1236463550.628799
-> 163-target-attach 288
#  PBXGDB_MIAttachCommand t=4.998293 Tepoch=1236463550.628955
<- (gdb) 
<- ~"Attaching to program: `/private/var/root/Library/Application Support/iPhone Simulator/User/Applications/09734C45-F595-4CB9-8707-744E92D66245/TestApp.app/TestApp', process 288.\n"
<- ~"Re-enabling shared library breakpoint 1\n"
<- =shlibs-updated
<- 163^done,thread-id="1",time={wallclock="0.00362",user="0.00151",system="0.00203",start="1236463550.629436",end="1236463550.633055"}
#  processing result t=5.010455 Tepoch=1236463550.641117
#  Enqueue seq in Command Q: <PBXGDB_ThreadListSequence: 0xa4e0520> t=5.011284 Tepoch=1236463550.641946
-> 164-exec-continue
#  PBXGDB_MIContinueExecutableCommand t=5.011420 Tepoch=1236463550.642082
<- (gdb) 
<- 164^running
#  processing result t=5.070065 Tepoch=1236463550.700727
#  didFinish Sequence: <PBXGDB_AttachControlSequence: 0xa4fceb0> t=5.071843 Tepoch=1236463550.702505
<- (gdb) 

【问题讨论】:

  • 我虽然你可能对设备部分有问题,调试客户端在它上面......但是在模拟器上?!没办法
  • 你试过重启吗?如果进程列表中可能有一个杂散的模拟器进程挂起?!?虽然
  • 多次重启,没有运气。今晚去四处逛逛,试试其他的东西,会让你知道的。
  • 您是否有另一台 Mac 可以尝试在其上运行您的项目?这可能会告诉你它是 Xcode/SDK 还是关于你的应用程序的东西。就此而言,您可以调试 Mac 应用程序吗?尝试创建一个空的 Cocoa 项目并调试它。
  • 在运行/调试时,是否在 Xcode 窗口的左下角看到文本“GDB: Running...”?

标签: iphone xcode cocoa-touch debugging xcode3.1


【解决方案1】:

我找不到“GCC 4.0 - 代码” 任何地方的生成选项。我有 在 Target 和 可执行信息页面。唯一的选择 我看到的是选择编译器 版本,并且选择了 GCC 4.0,但是 这是一个单行部分,没有 其他选项。

如果 Active SDK 与目标的 Base SDK 不同步,这是 3.1.1 和 3.1.2 中的 Xcode 错误。将 Target 的 Base SDK 设置为 Simulator,确保您的 Active SDK 为 Simulator,然后重试。

如果您真的想回答这个问题,您将不得不发布有关您的项目的更多信息:构建设置的屏幕截图,或来自调试器控制台的文本。

更新: 还要注意 Xcode > Preferences > Debugging: alt text http://idisk.mac.com/cdespinosa/Public/GDB%20Log.png

选中该框,在路径字段中输入一个合理的路径,尝试您的调试方案,然后在http://bugreporter.apple.com 提交错误并附上日志和您的方案描述,或者在 xcode-users 询问好人@lists.apple.com。 gdb 日志包含有关调试器如何与您的应用程序交互的所有信息。

【讨论】:

  • 这是我听过的最有希望的声音。今晚我会仔细检查目标的 SDK 设置,然后在这里发回(希望到那时我可以将其标记为已回答)
  • 我要投票给你以反驳有人投票赞成我的答案的事实。虽然我想我的回答通常会很有用,但操作员明确表示事实并非如此,我什至不想得到我不应该得到的半个赏金。
  • 已编辑原始帖子。如果我从苹果邮件列表中得到任何反馈,我会回复
【解决方案2】:

在 Xcode 首选项中,进入调试部分并关闭“惰性加载符号”。

几个月前,当我第一次遇到这个问题时,它为我解决了。

【讨论】:

  • 我遇到了同样的问题,这为我解决了问题。感谢 oldbeamer。
  • 也为我修复了它。谢谢!
【解决方案3】:

这是一种“是否已插入”的答案,但是,嘿,有时这就是问题所在:是否启用了断点?有时在调试时,我忘记点击调试工具栏中启用和禁用断点的按钮。

【讨论】:

    【解决方案4】:

    GCC 4.0 - 代码生成 部分仅在您将 Active SDK 设置为 Device - iPhone OS 2.x 时显示。去搞清楚。当 Active SDK 是模拟器时,它们就会消失。

    您应该将 Active SDK 更改为 Device,更改设置,然后再更改回 Simulator。在设备下进行的设置也应该适用于模拟器。这也适用于例如。为预处理设置 -DDEBUG 标志。

    (更新:我只猜对了一半。请参阅 Chris Espinosa 接受的答案:此 SDK 错误。当 Active SDK 设置为“设备”时,并不是 GCC 4.0 部分出现,而是您的 Base SDK 和 Active SDK 必须匹配才能访问这些设置)。

    【讨论】:

    • 今晚我将尝试对 Base/Active SDK 进行更改,然后将结果发回此处。
    【解决方案5】:

    另一个简单的建议:
    断点浅蓝色是深蓝色吗?

    Xcode 允许您停用断点,这些断点用浅蓝色箭头指示(就像它已变暗一样)。

    【讨论】:

    • 这很酷,只是最近被我咬了。
    【解决方案6】:

    尝试通过点击 Command-Option-Y 来运行项目(这会强制 Xcode 使用调试器启动程序)。

    Xcode 菜单栏上的按钮可能会有些误导。如果按钮显示“运行”,它不会在调试器中运行程序。如果它说“Go”,它会运行程序,但它是最后构建的(即发布或调试)。 Command-Option-Y 专门在调试器中启动程序。

    另外,请确保您的断点已启用。您可以右键单击它们进行检查。此外,在调试器窗口中,工具栏上应该有一个用于激活或停用断点的选项。确保它们已激活。

    【讨论】:

    • 我已经清理和重建了多次,并开始使用 Command-Option-Y 没有运气。
    【解决方案7】:

    这可能是一个非常明显的答案,但它可以工作。您是否尝试过在 main() 以外的代码中添加断点?例如,在 App Delegate 的 applicationDidFinishLaunching 方法中?我知道它应该首先通过 main,但由于 main 中的代码通常不会针对 iPhone 应用程序进行修改,因此它可能有点不稳定。无论如何,值得一试。

    此外,要查找 GCC 4.0 - 代码生成选项,请单击三角形以打开“目标”组,然后单击“目标”下方的应用名称。单击 Xcode 窗口顶部的 Info 按钮,您将获得应用程序的设置。转到构建。确保 Show: 下拉菜单设置为 All Settings。如果您从那里向下滚动,它应该是您可以编辑的列表之一(在版本控制之后和 GCC 4.0 - 语言之前)

    【讨论】:

    • 是的,我已经在 AppDelegate 的启动代码中进行了尝试。事情就是这样。该应用程序按我的预期运行,所以我知道所有代码都已执行。它只是没有达到断点。 cdespinosa 的答案看起来很有希望。今晚将返回结果。
    【解决方案8】:

    当程序运行时,您可以在控制台窗口中执行 CTRL-C(当光标在那里时)。如果你中断程序类型info br应该给出活动断点的列表,那么问题是,它们是你设置的吗?

    【讨论】:

    • (gdb) info br Num Type Disp Enb Address What 1 breakpoint keep y 0x000028cf in main at /Projects/TestApp/main.m:13 --- 它不会在这个断点处停止。这是 main() 中的第一行
    【解决方案9】:

    有两个 gdb 配置文件值得一看。

    • /etc/gdb.conf

    我的有 MD5 (/etc/gdb.conf) = 31b58e1ecf038554faadf777d63e9085

    • ~/.gdbinit

    我没有,你有吗?

    【讨论】:

    • MD5 (gdb.conf) = 31b58e1ecf038554faadf777d63e9085 :) - 没有.gdbinit
    【解决方案10】:

    您是否验证过您的构建配置正在使用您的开发证书进行代码签名?

    如果您使用的是 Ad Hoc 证书,它仍然可以正常构建和运行,但在启动应用程序后不久,Xcode 将与设备分离,因此不会遇到断点。如果在单击 Build & Go 后查看 Xcode 主窗口的左下方,您可以快速判断它是否已分离 - 如果您没有使用实际的开发设备证书,您将看到一条消息:说“从设备接收到无效的十六进制代码”。

    【讨论】:

      【解决方案11】:

      我看起来你正在以root 运行程序,这似乎不对...

      【讨论】:

      • 我绝望了,以 root 身份登录。我将尝试使用其他帐户
      • 如果你使用 ctrl-c 技巧并添加一个新的断点,例如 "br somefile.m:23" 在按钮操作中的位置怎么办?并“继续”尝试按钮?
      【解决方案12】:

      在您的构建设置列表中,您没有涵盖最关键的设置:

      alt text http://idisk.mac.com/cdespinosa/Public/Generate%20Debug%20Symbols.png

      确保为调试配置选中生成调试符号,并确保在构建和调试时调试配置处于活动状态。

      另外两件事要尝试:

      1) 取消选中修复并继续。您详细的 gdb 日志表明它可能已打开。请确保在确认时查看的是目标设置而不是项目设置。

      2) 尝试 not 以 root 身份运行。目前尚不清楚您为什么需要这样做。以 root 身份运行的 Xcode 可能与模拟器有交互;坦率地说,我们很少使用这种配置,所以我不知道。

      日志显示一切运行正常。你有一个正在模拟器中启动的构建二进制文件;它是正确的架构且格式良好;你有调试符号;您有一个断点,并且正在设置断点。我们相信你的话(因为我们没有看到你的源代码)断点实际上是在正在执行的代码行上。

      【讨论】:

      • 这是在什么信息页面上?我不记得在 Executable 或 Target 设置中看到过这个,但我会再看一遍。
      • 啊,在目标或可执行设置下的任何地方都找不到此设置
      【解决方案13】:

      如果您使用的是 Ad Hoc 证书,它仍然可以正常构建和运行,但不久之后 启动应用程序时,Xcode 将与设备分离,因此不会遇到断点。

      这对我有帮助。

      【讨论】:

        【解决方案14】:

        我不得不问,因为我有同样的问题,这是一个“真正的”mac 吗? voodoo hacintosh 内核确实存在这个问题。如果您使用的是 voodoo 内核,请使用 std_dyld=1 启动,一切都会好起来的

        【讨论】:

        • 我在真正的 mac 和 hackin0sh 上见过它。不确定后者的发行版。如果这个提示有效,我会投票赞成你的评论。
        【解决方案15】:

        这确实适用于 voodoo 内核,使用 std_dyld=1 启动会使 Xcode 在断点处停止。惊人的提示,真的。非常感谢你,约翰你的一种救命稻草! 我使用 OSX86Tools 自动添加了这个引导标志。 马球

        【讨论】:

          【解决方案16】:

          我在这个线程中尝试了几乎所有方法,重新启动设备解决了我的问题。

          【讨论】:

            【解决方案17】:

            我也遇到了同样的问题。我还没有真正的解决方案,但我发现,就我而言,它取决于设备。该错误仅发生在我的 iPod Touch 4G 上。当我切换到我的 iPhone 3G 时,一切正常,断点再次起作用。

            我不知道这是否与问题有关,但可能是由于安装了 iOS 5 beta 2 导致 iPod4 出现问题。通常当我遇到 iOS 5 中的错误时,只需重启设备即可.但是...重新启动 iPod4 对我没有帮助...

            解决方案:

            这个问题困扰了我几个星期,但我终于找到了适合我的情况的解决方案:

            1. 确保您 Mac 上的 SDK 与您设备上的 iOS 版本相同(或更新)。
            2. 当设备通过 USB 连接并且 Xcode 正在运行时重新启动设备。

            【讨论】:

              【解决方案18】:

              我也遇到过类似的情况。经过6个小时的调试和项目文件比较,终于成功了。情况是我有一个 2 年前的项目,最初是在 Xcode 3.1 天制作的。我尝试在带有断点的 Xcode 4.5.1 中运行它,但它从来没有工作过。

              这是我所做的修复它..

              1) 在 Project>Build Settings.. 中搜索 Debug。 2) 仅构建活动架构 > 将调试更改为是 3) 生成调试符号 > 是 4) 预处理器宏 > 调试 = 1

              现在运行良好。

              【讨论】:

                【解决方案19】:

                Apple 应该真正改善整体 Xcode 体验。我理解它是免费的(嘿,你得到你所支付的),但是,其中的错误几乎是对开发人员的侮辱。

                【讨论】:

                • 这不是一个有用的答案,但我完全同意。我很乐意为更好的 Cocoa 开发 IDE 支付 500 美元,但没有人会制造其中之一。 Xcode 是免费的这一事实阻碍了其他人做出更好的东西,因此 Apple 的责任超出了许多“免费”项目的责任。
                猜你喜欢
                • 2023-03-12
                • 2015-06-30
                • 2010-11-25
                • 2011-07-14
                • 2013-09-27
                • 2015-07-17
                • 2015-02-08
                • 2017-11-01
                • 1970-01-01
                相关资源
                最近更新 更多