一个典型的logcat输出比如这样:
E/InetAddress( 1561): 1name=ipv6.google.com
E/InetAddress( 1561): ipv6.google.com is an alias for ipv6.l.google.com
E/InetAddress( 1561): y.a=72.14.203.121
E/InetAddress( 1561): name=ipv6.google.com
E/InetAddress( 1561): -------------- return from InetAddress_getaddrinfoImpl ----------------
E/Tab     ( 1561): onReceivedError -2 http://ipv6.google.com/ The URL could not be found.
D/dalvikvm( 1561): GC_EXTERNAL_ALLOC freed 5689 objects / 285736 bytes in 38ms
D/dalvikvm( 1437): GC_EXPLICIT freed 668 objects / 60408 bytes in 25ms显示了tag和进程信息,能不能通过这些信息快速地定位出到底是哪个文件输出的信息?
比如查看Tab是哪个文件拥有的tag?(我知道是packages/apps/Browser/src/com/android/browser/Tab.java,这里是举个例子,求问一个定位的方法)或者查看1561这个进程当前是哪个文件在调用?能有什么命令或者方法做到这些吗?其实我想知道的是,红色这行是某文件调用了Tab.java中的一个方法的输出,但是不知道怎么确定这个文件是哪个文件??

解决方案 »

  1.   

    如果是你工程里的java文件的功能报错的,logcat会定位到具体的java文件某一行
      

  2.   

    我是用adb connect连上一个device,然后adb logcat得到这些调式输出的
      

  3.   

    我来给你讲讲这一整句是什么意思
    E/Tab ( 1561): onReceivedError -2 http://ipv6.google.com/ The URL could not be found.E:是error,表示Log.e 打出来的。
    Tab:是某个java文件里,开头 private static final String TAG = "Tab";  
       那么Tab就作为标志信息显示出来
    1561: 是进程号类似的东西,对于我们没有直接利用价值。
    onReceivedError -2 http://ipv6.google.com/ The URL could not be found. :则是输出信息,在你的那个.java文件里会找的到打印这句的代码的。
      

  4.   

    怎么利用这条信息来找到错误位置,这是程序员的基本功,必须追求能快速精准的找到文件所在。最基本的办法:
    find -name *.java |xargs grep ”Tab“  我先只告诉你这么多吧 自己探究把
      

  5.   

    设置断点,进行,DEBUG。看debug
      

  6.   

    这个我知道啊不过还是感谢你
    话说我经常这样:grep -r "TAB" * > ./???.txt 跟你的那条命令有什么区别吗?
      

  7.   

    我没有在用eclipse,我是在调试底层的文件
      

  8.   

    我一般的做法就是在代码的关键位置设打印语句,然后就是结合debug来调
      

  9.   

    在Log输出的时候,给定啊.Log.i("当前文件名","消息");输出时不给定,当然看不到了.
      

  10.   

    其实是这样,文件A里面有个输出调试语句的方法,标签为Tab,但是是文件B调用了A的这个方法输出的调试语句。我想知道文件B是哪个文件,有没有什么方法?
    这些调试语句都是原来写好的,不是我自己写的
    谢谢大家!