这很简单:我在Linux上使用NetBeans和Android模拟器1.6.我在我的Android手机上安装了Logcat,但是将消息发送到可读的地方的过程根本不顺利.
有人能告诉我如何在模拟器上运行Logcat吗?有什么我可以做的看到调试消息,然后不得不将apk复制到我的手机并测试它?
提前致谢!
我正在按照本教程https://developer.android.com/guide/tutorials/views/hello-tabwidget.html完成它.现在我实际上想要向这些标签添加一些控件,如文本框(文本编辑).
我该怎么做呢?我使用eclipse作为我的ide转到我的mail.xml,然后转到布局视图,我现在得到一个NullPointerException,所以我甚至无法将内容拖到布局上.
编辑
这就是我所拥有的
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/textview1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="this is a tab" />
<EditText android:text="" android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:password="true"></EditText>
</LinearLayout>
<TextView
android:id="@+id/textview2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="this is another tab" />
<TextView
android:id="@+id/textview3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="this is a third tab" />
</FrameLayout>
</LinearLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud) 我刚刚开始调试我的前三行长Android应用程序,我似乎无法像我想的那样使用调试工具.这是我的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int a = 1 / 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我希望调试器停止该线程并向我显示除以零的语句行号.不,相反,它显示了我没有来源的系统内部的一些其他方法.更糟糕的是,也没有异常消息.
在这个应用程序之前,我创建了一个在按下按钮时会执行某项操作的应用程序.如果引发任何异常,则不会再显示有用的行号或异常消息.
截至目前,无法调试我的应用程序.有任何想法吗?
我正在使用最新的SDK以及Eclipse ADT插件并在真实设备(Nexus One)上进行调试.
请尝试以下方法:
创建一个HelloWorld应用程序.
将一条Log语句添加到onCreate的末尾:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("HelloWorldActivity.onCreate()", "setContentView() completed");
}
在Log语句上放置一个断点.
在模拟器中运行应用程序并记下它的工作原理并逐步查看Eclipse的LogCat窗口中的Logged条目.
将HelloWorldActivity更改为从ListActivity而不是Activity扩展.
public class HelloWorldActivity extends ListActivity {
我的问题不是为什么会失败.我的问题是,您将如何调试此故障?我在Eclipse Debug窗格中看到的只是一个RuntimeException.我看到LogCat有一堆消息,但是它很庞大,我已经搜索了它,但找不到任何表明错误的地方或我的代码中发生异常的地方.我找不到在RuntimeException或堆栈跟踪中显示消息的方法,以了解哪行代码启动了异常.
我假设必须有更好的方法来使用这些工具来查找错误,但我是新手,似乎无法找到更好的调试方法,除了将我编码的所有内容包装在try/catch中.我原本希望在抛出异常时生成的LogCat中找到一条消息.我希望Debug窗口允许您检查异常的内容.我不是说这种技术不存在,我说我很难搞清楚如何调试和询问存在哪些技术以及如何使用它们?
所以,简单地说:
欢迎提出多项建议和讨论.:)
我会包含我的LogCat内容,但它太大了,这是不合理的.你应该能够轻松地自己重现这个,所以我把它遗漏了.LogCat中的某些东西可能对我有所帮助,但是因为它甚至运行一个小程序它是如此之大,我需要提示在搜索API调用抛出的异常时如何搜索以及如何解释它.我看到其他帖子说明LogCat中应该有什么东西,虽然可能是真的,但我自己找不到任何东西.如果您认为某些内容应该在LogCat中,请自行运行测试并将这些行复制到我应该找到的响应中.
谢谢.
========
截至目前的摘要技术列表如下:
入侵技术:1.将Toast放置在您希望看到您已执行的代码位置.2.将try/catch放在您认为可能抛出异常的代码中.3.注释掉代码并重新编译和重新测试.
非侵入性技术:1.使用调试器.断点,变量检查...... 2.猴子压力测试仪.3.下载Android源库.4.使用LogCat过滤器查看是否列出了"引起的".
不清楚是否可用:1.调试Android库的版本,其中包含其他日志记录,断言或其他附加帮助.2.能够通过Debug窗格或其他技术检查Eclipse中的Exception.3.一种定义更全局的try/catch异常处理程序的方法.4.能够通过Android库源代码进行调试.
不可用:1.一种非侵入性的方式来查看异常的内容或异常发生的位置.
我不是Java的新手,而是Android平台的新手.我发现其中一个平台缺点是对运行时崩溃有意义的反馈.在断点适用的用户代码中很好,但我在第一次运行时遇到了阻止我的项目启动的崩溃,我看不到跟踪它的方法.谁能摆脱任何光明?
DalvikVM[localhost:8626]
Thread [<1> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2585
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2679
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125
ActivityThread$H.handleMessage(Message) line: 2033
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4627
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 868
ZygoteInit.main(String[]) line: 626
NativeStart.main(String[]) line: not available [native method]
Thread [<6> Binder Thread #2] (Running)
Thread [<5> Binder Thread #1] (Running)
Run Code Online (Sandbox Code Playgroud)
模拟器和设备上相同.
我已经看到有关这些崩溃的报告是由无效XML的膨胀引起的,所以我已经从我的项目中删除了所有XML和资源,几乎是一个一个,并且同样的错误仍然存在!是否有任何技巧或工具可以申请尝试获得更有意义的错误消息?谢谢.