gpt4 book ai didi

iphone - xCode for iPhone EXC_BAD_ACCESS 错误仅在单步执行调试器时发生?

转载 作者:行者123 更新时间:2023-12-03 18:44:50 25 4
gpt4 key购买 nike

我正在 iPhone 的 xCode 中开发一个项目,在该项目中我收到了 EXC_BAD_ACCESS 错误,但是,我仅在单步调试我尝试调试的函数时收到该错误。当我从函数中取出断点,但仍然在 Debug模式下运行项目时,我从未收到此错误。是否有办法解决此问题或找出导致 EXC_BAD_ACCESS 错误的原因。

该行出现错误:for ( BEUCharacterAIBehavior *behavior in behavior_.behaviors )

但是,当单步执行值behavior_.behaviors 时,它会被分配并保留。 NSZombiesEnabled 已设置,但仍然收到神秘的错误消息。

代码:

-(BEUCharacterAIBehavior *)getHighestValueBehaviorFromBehavior:(BEUCharacterAIBehavior *)behavior_ {
//if the behavior is a leaf then stop checking because there are no sub behaviors
if([behavior_ isLeaf]) return behavior_;


//temp variable for highest value behavior so far
BEUCharacterAIBehavior *highest = nil;
//NSLog(@"BEHAVIORS:%@",behavior_.behaviors);
for ( BEUCharacterAIBehavior *behavior in behavior_.behaviors )
{

//if there is a highest value behavior check if the highest value behavior has a larger value than the new one
if(highest)
{
if(highest.lastValue > behavior.value) continue;
}

//if there is no current behavior then the highest is now the behavior were checking because we have nothing to check against
if(!currentBehavior) highest = behavior;
//Make sure the current behavior is not the same behavior as the new one
else if(currentBehavior != behavior)
{
//can the new behaviors parent run multiple times in a row
if(!behavior.parent.canRunMultipleTimesInARow)
{
//make sure the current and new behaviors parents arent the same if they are continue to next behavior
if(currentBehavior.parent != behavior.parent)
{
continue;
}
}

highest = behavior;
//If current behavior and new behavior are the same make sure they can run multiple times
} else if(currentBehavior.canRunMultipleTimesInARow)
{
highest = currentBehavior;
}
}
//NSLog(@"GOING TO GET HIGHEST VALUE BEHAVIOR FROM BEHAVIOR: %d",highest.retainCount);
if(!highest) return nil;
return [self getHighestValueBehaviorFromBehavior:highest];//highest;

}

错误堆栈

object_getClass 中的 0 0x02aebdcb
1 0x00002ac0 在
2 0x00014bb9 在 -[BEUCharacterAI getHighestValueBehaviorFromBehavior:] 位于 BEUCharacterAI.m:115
3 0x00014b6b 在 -[BEUCharacterAI getHighestValueBehavior] 位于 BEUCharacterAI.m:103
4 0x00014904 在 -[BEUCharacterAI 更新:] 位于 BEUCharacterAI.m:68
5 0x00008975 在 -[BEUCharacter 步骤:] 在 BEUCharacter.m:229
6 0x00022aeb 在 -[EskimoCharacter 步骤:] 在 EskimoCharacter.m:28
7 0x0000ed2b 在 -[BEUObjectController 步骤:] 在 BEUObjectController.m:381
8 0x00003651 在 -[BEUGame 步骤:] 在 BEUGame.m:63
9 0x0007cc42 in -[CCTimer fire:] 在 CCScheduler.m:87
10 0x0007d846 在 -[CCScheduler 勾选:] 在 CCScheduler.m:212
11 0x000500b3 在 -[CCDirector mainLoop] 位于 CCDirector.m:208
12 0x000532b3 在 -[CCDisplayLinkDirector preMainLoop:] 位于 CCDirector.m:1055
13 CA::Display::DisplayLink::dispatch 中的 0x00796f06
14 0x0079704b 在 CA::Display::EmulatorDisplayLink::callback
15 CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION
中的 0x029810f316 __CFRunLoopDoTimer
0x0298273417 __CFRunLoopRun
中的 0x028df68918 CFRunLoopRunSpecific 中的 0x028dec00
19 CFRunLoopRunInMode 中的 0x028deb21
20 GSEventRunModal 中的 0x03e96378
21 GSEventRun 中的 0x03e9643d
22 0x0083bf89 在 UIApplicationMain
23 0x00002b50 在 main 中,位于 main.m:13

最佳答案

我用的是 Xcode 4.2.1 和 lldb。切换到 gdb 解决了问题。

关于iphone - xCode for iPhone EXC_BAD_ACCESS 错误仅在单步执行调试器时发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com