当前位置: 首页 > 面试题库 >

调试服务

公孙高轩
2023-03-14
问题内容

我已经编写了带有远程接口的服务,并将其安装在PC的Eclipse AVD上。我有一个客户端测试工具,可以启动和调用服务中的方法。最初,我是通过控件类和活动安装的服务,现在已将其删除,因此该服务的清单如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myname.gridservice"
android:versionCode="1"
android:versionName="1.0">
<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:debuggable="true">
    <service
        android:enabled="true"
        android:debuggable="true"
        android:name="OverlayService">
        <intent-filter>
            <action android:name="com.myname.OverlayService.SERVICE"/>
            <action android:name="com.myname.gridservice.IRemoteInterface" />
        </intent-filter>
    </service>
 </application>  
</manifest>   

因此没有活动标签。

当我从Eclipse中的调试图标启动它时,控制台会告诉我它正在安装apk(它确实是),但是它并没有作为调试线程出现,也没有触发断点,尽管该服务的行为到目前为止还可以如客户所见。如果将服务标签包装在具有关联类的活动标签中并启动它,则可以对其进行调试。

是否可以在不将其包装在活动中的情况下调试该服务?


问题答案:

您可以按照以下四个步骤进行操作:

首先:在您的服务的第一个有趣方法中(我在create上使用过):

/* (non-Javadoc)    
 * @see android.app.Service#onCreate()
 */
@Override
public void onCreate() {
    super.onCreate();
    //whatever else you have to to here...
    android.os.Debug.waitForDebugger();  // this line is key
}

第二:在waitForDebugger命令后的任意位置设置断点。

第三:通过IDE中的调试按钮启动应用程序(Eclipse / Android Studio / …)。(您现在可能应该已经从清单中删除了主要的启动活动)

最后:启动adb并运行命令以启动服务:

  • cd $PLATFORM_TOOLS
  • adb shell
  • am startservice -n com.google.android.apps.gtalkservice/com.google.android.gtalkservice.service.GTalkService


 类似资料:
  • 更新时间:2019-05-30 19:09:16 步骤3:调试服务 正式发布服务之前,使用虚拟设备对服务进行调试。 前提条件 已完成服务流配置、部署和启动。具体流程,请参见步骤2:编辑服务流。 背景信息 以下调试流程适用于设备触发的服务。 HTTP接口的服务调试,只需单击调试即可。日志中将显示调试结果。 定时触发的服务调试,单击调试,输入时间。服务运行后,日志中将显示调试结果。 操作步骤 在服务开

  • 11.4. 调试 HTTP web 服务 首先, 让我们开启 Python HTTP 库的调试特性并查看网络线路上的传输过程。 这对本章的全部内容都很有用, 因为你将添加越来越多的特性。 例 11.3. 调试 HTTP >>> import httplib >>> httplib.HTTPConnection.debuglevel = 1 >>> import urll

  • 调试模式 开启调试模式,修改config/app.php 'debug' => true, 打开后runtime/service/{service}.log会记录收到的数据包

  • 下面是一个helper函数的代码 基本上,此方法只需使用HttpRequest和HttpResponse调用endpointURL,endpointURL是web服务,在参数中指定的超时之后,它将只返回200。 现在的问题是,我需要编写一个测试用例来涵盖这个方法,但我不知道如何编写它。。我不知道如何正确模拟httpcallout,因为此方法不返回HttpResponse,而且由于代码现在已冻结,我

  • E.1.1. 为调试编译MySQL E.1.2. 创建追踪文件 E.1.3. 在gdb环境下调试 E.1.4. 使用堆栈跟踪 E.1.5. 使用日志文件找出mysqld错误原因 E.1.6. 如果发生表崩溃则做一个测试案例 如果你使用MySQL某些非常新的功能,你可以带--skip-new参数(这个选项禁止掉所有新的潜在不安全的功能)或带 --safe-mode参数(它禁止掉很多可能导致问题的优化

  • 问题内容: 我一直在为Android开发一个包含后台服务的PhoneGap应用程序。我的问题是:如何调试此服务?是否可以使用AVD进行调试并逐步进行?还是可以使用自己的设备来实现? 谢谢! 问题答案: 是的,可以使用AVD或设备来完成。查看http://www.helloandroid.com/tutorials/how-debug- service 和调试服务。