0

Samsung Infuse 4g 電話を使用して Android アプリケーションをデバッグしようとしています。電話機で USB デバッグが有効になっています。マニフェスト debuggable = true; に追加しました。Logcat は、デバッガーが解決したことを示しています (1325)。しかし、コードを実行すると、ブレークポイントで停止せず、変数ウィンドウに変数が表示されません。ここで何がうまくいかないのですか?これは logcat の出力です。

04-03 00:55:47.210: I/System.out(8726): Sending WAIT chunk
04-03 00:55:47.218: I/dalvikvm(8726): Debugger is active
04-03 00:55:47.415: I/System.out(8726): Debugger has connected
04-03 00:55:47.415: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:47.613: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:47.819: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:48.023: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:48.234: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:48.433: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:48.636: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:48.839: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:49.042: I/System.out(8726): waiting for debugger to settle...
04-03 00:55:49.249: I/System.out(8726): debugger has settled (1325)

デバッガーが何かを実行していることを確認できるのは、意図的にプログラムをクラッシュさせたときだけです。次に、Double.ParseDouble(String) の例外が表示されますが、そのソース コードがありません...エミュレーターを試しても同じ問題が発生し、プログラムがクラッシュするまでデバッグは行われません。

package com.example.calculator;



public  class Math {
double mathValue;
double totalValue;
int lastOperator;

public double getTotalValue(){
    if (this.totalValue == 0)
        return this.mathValue;
    else
    return this.totalValue;
}

public void add(){

}

public void setOperater(String nextOperater){
    if (nextOperater == "+")
        this.lastOperator = 1;

    if (nextOperater == "-")
        this.lastOperator = 2;

    if (nextOperater == "*")
        this.lastOperator = 3;

    if (nextOperater == "/")
        this.lastOperator = 4;

    if (nextOperater == "")
        this.mathValue = 0;



}

public void doMath(double inValue){
    this.mathValue = inValue;
    switch (lastOperator){
    case 1 : Add();
            break;
    case 2 : Subtract();
            break;
    case 3 : Multiply();
            break;
    case 4: Divide();
            break;

    }

}

public void Add(){
    System.out.println("The line before my breakpoint");
    totalValue += mathValue; <---- break point
    System.out.println("The line after my breakpoint");
}

public void Subtract(){

    totalValue -= mathValue;
}

public void Multiply(){

    totalValue *= mathValue;
}

public void Divide(){
    if (mathValue == 0)
        totalValue = 0;
    else
        totalValue /= mathValue;

}

}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.calculator"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:debuggable="true">
        <activity
            android:name="com.example.calculator.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
4

3 に答える 3

1

デバッグ コントロールで「すべてのブレークポイントをスキップ」が有効になっていないことを確認します。

于 2013-04-03T00:48:20.010 に答える
1

アプリをデバッグモードで実行する必要があります

デバッグモード

于 2013-04-02T23:44:20.453 に答える
0

AndroidManifest.xml でアプリケーションを「デバッグ可能」として宣言します。

<application
    android:debuggable="true"
    ... >
    ...
</application>
于 2013-11-08T14:39:51.520 に答える