android报错如何查找原因?
写了一个安卓程序,运行是在LogCat发现好多行红字,怎么检测这些工资在代码中错误的位置在哪里呀?...
写了一个安卓程序,运行是在LogCat发现好多行红字,怎么检测这些工资在代码中错误的位置在哪里呀?
展开
4个回答
展开全部
一般最上面main下面的为错误原因,可以在网上查找错误原因(一般常见都是权限问题、空指针异常、Activity未定义等)。再往下找前面带有你工程包名的那行提示,双击后显示出现错误位置,一般双击看到的最上面的包名(看到多个包名提示信息时)
1、使用Eclipse的断点,查看堆栈
2、最常用的就是LOG
log很简单的,举个简单的例子:
LOGD("initHeapLocked: raw size= %d x %d", picture_width, picture_height);
LOGE("initHeapLocked: raw size= %d x %d", picture_width, picture_height);
D就是debug的意思,E就是error的意思~~
更详细的log打印方式可以看这个:
static void show_help(const char *cmd)
{
fprintf(stderr,"Usage: %s [options] [filterspecs]\n", cmd);
fprintf(stderr, "options include:\n"
" -s Set default filter to silent.\n"
" Like specifying filterspec '*:s'\n"
" -f <filename> Log to file. Default to stdout\n"
" -r [ <kbytes>] Rotate log every kbytes. (16 if unspecified). Requires -f\n"
" -n <count> Sets max number of rotated logs to <count>, default 4\n"
" -v <format> Sets the log print format, where <format> is one of:\n\n"
" brief process tag thread raw time threadtime long\n\n"
" -c clear (flush) the entire log and exit\n"
" -d dump the log and then exit (don't block)\n"
" -g get the size of the log's ring buffer and exit\n"
" -b <buffer> request alternate ring buffer\n"
" ('main' (default), 'radio', 'events')\n"
" -B output the log in binary");
fprintf(stderr,"\nfilterspecs are a series of \n"
" <tag>[:priority]\n\n"
"where <tag> is a log component tag (or * for all) and priority is:\n"
" V Verbose\n"
" D Debug\n"
" I Info\n"
" W Warn\n"
" E Error\n"
" F Fatal\n"
" S Silent (supress all output)\n"
"\n'*' means '*:d' and <tag> by itself means <tag>:v\n"
"\nIf not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.\n"
"If no filterspec is found, filter defaults to '*:I'\n"
"\nIf not specified with -v, format is set from ANDROID_PRINTF_LOG\n"
"or defaults to \"brief\"\n\n");
所有的log信息在DDMS上都可以看到,或者简单点直接在shell里面敲:
adb shell
logcat > mylog &
1、使用Eclipse的断点,查看堆栈
2、最常用的就是LOG
log很简单的,举个简单的例子:
LOGD("initHeapLocked: raw size= %d x %d", picture_width, picture_height);
LOGE("initHeapLocked: raw size= %d x %d", picture_width, picture_height);
D就是debug的意思,E就是error的意思~~
更详细的log打印方式可以看这个:
static void show_help(const char *cmd)
{
fprintf(stderr,"Usage: %s [options] [filterspecs]\n", cmd);
fprintf(stderr, "options include:\n"
" -s Set default filter to silent.\n"
" Like specifying filterspec '*:s'\n"
" -f <filename> Log to file. Default to stdout\n"
" -r [ <kbytes>] Rotate log every kbytes. (16 if unspecified). Requires -f\n"
" -n <count> Sets max number of rotated logs to <count>, default 4\n"
" -v <format> Sets the log print format, where <format> is one of:\n\n"
" brief process tag thread raw time threadtime long\n\n"
" -c clear (flush) the entire log and exit\n"
" -d dump the log and then exit (don't block)\n"
" -g get the size of the log's ring buffer and exit\n"
" -b <buffer> request alternate ring buffer\n"
" ('main' (default), 'radio', 'events')\n"
" -B output the log in binary");
fprintf(stderr,"\nfilterspecs are a series of \n"
" <tag>[:priority]\n\n"
"where <tag> is a log component tag (or * for all) and priority is:\n"
" V Verbose\n"
" D Debug\n"
" I Info\n"
" W Warn\n"
" E Error\n"
" F Fatal\n"
" S Silent (supress all output)\n"
"\n'*' means '*:d' and <tag> by itself means <tag>:v\n"
"\nIf not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.\n"
"If no filterspec is found, filter defaults to '*:I'\n"
"\nIf not specified with -v, format is set from ANDROID_PRINTF_LOG\n"
"or defaults to \"brief\"\n\n");
所有的log信息在DDMS上都可以看到,或者简单点直接在shell里面敲:
adb shell
logcat > mylog &
展开全部
一般最上面main下面的为错误原因,可以在网上查找错误原因(一般常见都是权限问题、空指针异常、Activity未定义等)。再往下找前面带有你工程包名的那行提示,双击后显示出现错误位置,一般双击看到的最上面的包名(看到多个包名提示信息时)。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
得看你是什么类型的错误,通常会cause by 下一行双击定位到,报错的是哪一行代码,null pointer 一般情况都是控件初始化的问题,其他的如定位不到是哪一行,把错误的原因贴到百度,交给大神们就Ok啦。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有包名的地方是可以点开的,直接定位到出错的那一行。
留意 exception的类型,通过字面意思思考看会是哪里出问题。
留意 exception的类型,通过字面意思思考看会是哪里出问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询