使用nstask工具时获取dymotutil malloc错误已退出,代码为134



这是我在可可应用程序中使用nstask生成ios构建的代码。

NSTask *task=[[NSTask alloc]init];
task.launchPath=@"/library/Frameworks/Mono.Framework/Commands/xbuild";
task.arguments= @[@"/p:Configuration=Release",@"/p:Platform=iPhone",@"/p:BuildIpa=false",@"/target:Build",@"/Users/xyz/Projects/SimpleDemo/SimpleDemo.sln"];
NSPipe *pipe=[[NSPipe alloc]init];
[task setStandardOutput:pipe];
NSFileHandle *outputFileHandle;
outputFileHandle = [[NSFileHandle alloc]init];
outputFileHandle=[pipe fileHandleForReading];
[outputFileHandle waitForDataInBackgroundAndNotify];
[[NSNotificationCenter defaultCenter] addObserverForName:NSFileHandleDataAvailableNotification object:outputFileHandle queue:nil usingBlock:^(NSNotification *notification){
    NSData *output = [outputFileHandle availableData];
    NSString *outStr = [[NSString alloc] initWithData:output encoding:NSUTF8StringEncoding];
    NSLog(@"%@",outStr);
    [outputFileHandle waitForDataInBackgroundAndNotify];
}];
@try {
    [task launch];
    [task waitUntilExit];
}
@catch (NSException *exception) {
    NSLog(@"%@",[exception callStackSymbols]);
}
@finally {
}

我在运行代码时遇到这个错误

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iO S.Common.targets:错误:工具退出,代码:134。输出:警告:(armv7)找不到符号_xamarin_register_modules的对象文件符号警告:(armv7)找不到符号_xamarin_register_assembly的对象文件符号警告:(armv7)找不到符号_xamarin_setup的对象文件符号警告:(armv7)找不到符号_main的对象文件符号警告:(armv7)找不到符号_OBJC_METACLASS_$_MonoTouchAppDelegate的对象文件符号警告:(armv7)找不到符号_OBJC_CLASS_$_MonoTouchAppDelegate 的对象文件符号

dsymutil(6764,0x7fff78631000)malloc:*对象0x6000000fb400的错误:未分配要释放的指针*在malloc_error_break中设置断点以调试

在此生成过程中,.app生成后出现错误意味着.app生成之后出现问题。

注意:如果我使用terminal运行这个命令,那么它就可以正常工作,并且生成.ipa。问题是只有当我使用nstask运行此命令时。

我正在使用el capitan和xcode 7.1.1。如有任何帮助,我们将不胜感激。

根据@Itachi的建议,问题是关于启用MallocNanoZone。这需要明确地从NSTask的环境中删除。

这是我从IPABuddy 得到的代码

        NSTask *task=[[NSTask alloc]init];
        NSMutableDictionary *theEnvironment = [[NSProcessInfo processInfo].environment mutableCopy];
        if (theEnvironment[@"MallocNanoZone"])
        {
            [theEnvironment removeObjectForKey:@"MallocNanoZone"];
        }
        task.environment = theEnvironment;

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新