【问题标题】:Xamarin.iOS Debugger doesn't attachXamarin.iOS 调试器未附加
【发布时间】:2013-06-18 20:47:44
【问题描述】:

我们有一个调试器不会附加到 Xamarin Studio 的特定应用。我们尝试了最新的稳定版和 Beta 版渠道,但没有成功。它发生在模拟器或设备上。

当调试器分离时,我们可以在 XCode 的控制台中看到:

        Jun 18 15:41:51 Hitcents-iPad-2 kernel[0] <Debug>: lockbot[3258] Builtin profile: debugserver (sandbox)
        Jun 18 15:41:51 Hitcents-iPad-2 com.apple.debugserver-199[3270] <Warning>: Got a connection, waiting for debugger instructions.
        Jun 18 15:41:51 Hitcents-iPad-2 com.apple.debugserver-199[3270] <Warning>: 1 +0.000000 sec [0cc6/0303]: error: ::ptrace (request = PT_THUPDATE, pid = 0x0cc7, tid = 0x2503, signal = -1) err = Invalid argument (0x00000016)
        Jun 18 15:41:51 Hitcents-iPad-2 com.apple.debugserver-199[3270] <Warning>: 2 +0.004989 sec [0cc6/1303]: error: ::read ( 5, 0x2fe809fc, 18446744069414585344 ) => -1 err = Bad file descriptor (0x00000009)
        Jun 18 15:41:51 Hitcents-iPad-2 com.apple.debugserver-199[3267] <Warning>: 1 +0.000000 sec [0cc3/0303]: error: ::read ( 5, 0x2fd4bebc, 1024 ) => 0 err = Bad file descriptor (0x00000009)
        Jun 18 16:55:11 Hitcents-iPad-2 mobile_installation_proxy[3471] <Error>: main: Could not receive request from host.
        Jun 18 16:55:11 Hitcents-iPad-2 mobile_installation_proxy[3468] <Error>: main: Could not receive request from host.
        Jun 18 16:55:12 Hitcents-iPad-2 BattlePillars[3474] <Warning>: MonoTouch: Debugger not loaded (disabled).

有什么想法吗?除了这个之外的其他应用程序都可以正常工作,我们看不出这个特定应用程序有什么不同会导致它。

我目前的版本是:

  • Xamarin Studio - 4.0.9
  • Xamarin.iOS - 6.3.6.77
  • XCode - 4.6.3
  • iOS - 可以是设备也可以是模拟器,只试过iOS 6.x
  • 此外,每个开发人员的 Mac 上都会发生这种情况,因此似乎特定于项目/解决方案

这是我的项目文件的sn-p:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
    <ProductVersion>10.0.0</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{07958BCE-7F33-4F8F-9A86-5102FF4632FB}</ProjectGuid>
    <ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <OutputType>Exe</OutputType>
    <RootNamespace>MyAppName</RootNamespace>
    <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
    <AssemblyName>MyAppName</AssemblyName>
  </PropertyGroup>

<!--Further down-->

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
        <Optimize>False</Optimize>
        <OutputPath>bin\iPhone\Debug</OutputPath>
        <DefineConstants>DEBUG, IPHONE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <ConsolePause>False</ConsolePause>
        <MtouchDebug>True</MtouchDebug>
        <CodesignKey>iPhone Developer</CodesignKey>
        <CrashReportingApiKey />
        <MtouchI18n />
        <MtouchArch>ARMv7</MtouchArch>
        <IpaPackageName />
        <OptimizePNGs>false</OptimizePNGs>
        <MtouchLink>None</MtouchLink>
        <MtouchExtraArgs>-v -v -v</MtouchExtraArgs>
      </PropertyGroup>

解决方案:

有两个地方可以检查:

  • 项目选项->iOS 构建->附加选项 = 选中
  • 项目选项->编译器->常规选项->调试信息=完整

此外,我们有一个 Objective-C 绑定复杂的问题 (TestFlight),需要这个集合来修复调试版本:

#if !DEBUG
     TestFlight.TakeOff("key");
#endif

否则它会在 Debug 中崩溃。

【问题讨论】:

  • 为 DEBUG 关闭 TestFlight 对我有用。这意味着添加一个“!”在第一行(#if !DEBUG)
  • 是的,这是一个错字,谢谢。
  • 你在哪里添加testflight?
  • 您将此代码放入您的 AppDelegate FinishedLaunching 方法中。

标签: c# ios xamarin.ios xamarin


【解决方案1】:

是否有人不小心关闭了调试器? :) 检查项目选项 -> 构建 -> iOS 构建 -> 启用调试

【讨论】:

  • 选中此复选框以获取适当的配置:Debug|iPhoneDebug|iPhone Simulator
【解决方案2】:

将“-v -v -v”(不带引号)添加到项目的 iOS 构建选项中的其他 mtouch 参数中,重新编译,并查看是否有任何内容打印到应用程序输出和(设备/系统)控制台。

【讨论】:

  • 我没有看到任何新内容,但我在 XCode 的控制台中添加了几行。
  • @jonathanpeppers:那是唯一的“MonoTouch:”行?如果这是唯一的一行,那么您一定是在应用程序的设置中以某种方式禁用了调试。
  • 看我上面的项目文件,&lt;MTouchDebug&gt; 是真的。你还有什么可以关闭它的吗?我还仔细检查了解决方案中的配置映射,这些也很好。
  • @jonathanpeppers:抱歉我没说清楚,我的意思是设备设置中显示的应用设置(打开设备上的设置,底部会有一个应用列表,应该成为您的应用程序,您应该有一个“调试设置”部分,其中“启用”为 ON)。
  • 是的,这个应用程序根本没有设置组。尝试从设备中删除它并重新部署。什么会删除它?我没有自定义设置包或任何东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 2019-02-11
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
相关资源
最近更新 更多