0

を使用するコードをデバッグしていますがMap<Integer,...>、さまざまなに関連付けられている値を見つけるのが非常に困難ですInteger。最小限の作業例を次に示します。

Javaコード(に保存.\src):

import java.util.Map;
import java.util.HashMap;

public class Hello {

    public static void main(String[] args) throws java.io.IOException {
        Map<Integer,String> mymap = new HashMap<Integer,String>(2);
        mymap.put(new Integer(5), "five");
        mymap.put(6, "six");
    }
}

ターミナル1(PowerShell):

javac -g $(ls . *.java -r -name)
java -cp src -Xdebug '-Xrunjdwp:transport=dt_shmem,server=y,suspend=y,address=hey' Hello

ターミナル2(PowerShell):

jdb -attach hey

..。

VM Started: No frames on the current call stack

main[1] stop at Hello:10
Deferring breakpoint Hello:10.
It will be set after the class is loaded.
main[1] cont
> Set deferred breakpoint Hello:10

Breakpoint hit: "thread=main", Hello.main(), line=10 bci=40

main[1] dump mymap.get(5)
com.sun.jdi.InvalidTypeException: Can't assign primitive value to object
 mymap.get(5) = null
main[1] dump mymap.get(new Integer(5))
com.sun.tools.example.debug.expr.ParseException: No class named: Integer
 mymap.get(new Integer(5)) = null
main[1]

から値を検索するにはどうすればよいMap<Integer,?>ですか?

4

2 に答える 2

2

完全修飾クラス名を使用します。

dump mymap.get(new java.lang.Integer(5))
于 2013-03-26T16:48:13.177 に答える
0

Java言語では、内部のクラスjava.langをインポートされたように使用できますが、jdbでは使用できません。

dump mymap.get(new java.lang.Integer(5))

動作するはずです。

于 2013-03-26T16:47:31.567 に答える