取消
显示结果 
搜索替代 
您的意思是: 
cancel
1780
查看次数
0
有帮助
0
评论
julianchen
Spotlight
Spotlight
引言:作为软件开发者,应用程序的异常是再稀疏平常不过了。那么,您怎么才能准确发现到用户为何会碰到了问题、具体错误在哪里、甚至是应用程序如何崩溃的呢?

众所周知,软件开发既具挑战性,又比较复杂。具体来说,无论我们是在开发登录页面的app还是Linux的内核驱动程序,软件都需要记录各种信息,并做大量的分析。

在上述这些信息中,如果您想找出为什么用户会碰到某个问题、具体错误在哪里、甚至是应用程序如何崩溃的话,分析它们的异常是必不可少的。

让我们先来看看下面的例子,异常消息显示了由于数据库表--tblmovies未被找到,所以异常PDOException被抛出。在此,您还能看到它是从初始点开始,执行到一个类的具体某行时所抛出的异常(我们已经将其编辑为可阅读的形式)。

PDOException thrown with message"SQLSTATE[HY000]: General error: 1 no such table: tblmovies".

Stacktrace:

#28 PDOException in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Statement.php:186

#27 PDO:prepare in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Statement.php:186

#26Zend\Db\Adapter\Driver\Pdo\Statement:prepare in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-db/src/Adapter/Driver/Pdo/Statement.php:212

#25Zend\Db\Adapter\Driver\Pdo\Statement:execute in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php:239

#24 Zend\Db\TableGateway\AbstractTableGateway:executeSelectin /Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php:209

#23Zend\Db\TableGateway\AbstractTableGateway:selectWith in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/src/Movies/src/Services/Database/MovieTable.php:48

...

#5Zend\Stratigility\Middleware\ErrorHandler:process in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-expressive/src/Middleware/LazyLoadingMiddleware.php:60

#4Zend\Expressive\Middleware\LazyLoadingMiddleware:process in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-stratigility/src/Next.php:128

#3 Zend\Stratigility\Next:process in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php:102

#2 Zend\Stratigility\MiddlewarePipe:processin /Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/vendor/zendframework/zend-expressive/src/Application.php:374

#1 Zend\Expressive\Application:run in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/public/index.php:29

#0 {closure} in/Users/settermjd/Documents/Business/Projects/Zend ExpressiveCourse/book-code/iteration-five/public/index.php:30

那么您的应用程序也会记录这些信息,而且能够记录到一个集中存储的日志区域吗?如果是这样的话,它们:

· 所记录的信息容易被获取得吗?
·
· 是否能够被有效地进行解析?
·
· 您是否能回溯到问题的提交源头(和提交者)呢?
·
· 它是否提供了额外的元数据和有助于理解的提示呢?
·
· 是否会包含个人身份信息(PII)、凭证、或其他任何形式的且需要进行安全加固的信息呢?
·
如果不能够满足上述所有、或者至少是大部分问题的话,这就会存在问题的隐患。在此,您可以通过阅读本文,了解到四款在线的异常跟踪服务。请注意,我们的罗列并无特别的优先顺序。

Raygun

承蒙可口可乐、微软、Slack和3M的赏识,Raygun能为各种应用异常的跟踪提供时髦且专业的用户界面(UI)。由于已有现成且详尽的指导性文档,Raygun很容易被上手。

除了基本的安装设置文档之外,Raygun还能为其各个方面的服务提供大量的扩展文档(https://raygun.com/docs)。其中包括:

· 设置审计日志。
·
· 管理用户和组。
·
· 配置集成(其中包括Bitbucket、PivotalTracker、Visual Studio Team Services、Zendesk、Slack、YouTrack和Trello)。
·
· 各种API和网络钩子。
·
Raygun能够支持各种语言、平台和框架。这些包括PHP、.Net、安卓、iOS、MacOS、WordPress、Java、Python、Cold Fusion和C++。

Raygun所提供的服务主要集中在两个方面:崩溃报告(crashreporting)和真实用户监控(real user monitoring)。崩溃报告旨在通过查找,来了解和修复那些造成应用崩溃的各种异常。对于每一个被发送到Raygun的异常,它们会被分解和重新组织,并且根据如下条目进行分类显示:

· 何时发生的
·
· 发生在哪个页面上
·
· 异常的消息体本身
·
· 发生的区域
·
例外可以通过各种类型的标准来进行过滤,其中包括浏览器类型、操作系统类型、宿主机以及机器名等。而真实用户监控,则是从另一个方面,提供了有关应用是如何被执行的细节,包括如下的度量维度(如果适用的话):

· 平均加载的时间
·
· 页面加载的时间
·
· 客户数与浏览量
·
这种功能可帮助用户跟踪每一个部署对应用程序的影响,是正面还是负面的。同时,用户的仪表板界面也能够被完全定制,以满足您的项目和团队的需要。具体包含的细节包括:

· 加载时间
·
· 全局会话的分布
·
· 活动使用用户
·
· 会话数量
·
· 总用户数
·
· 新用户数
·
· 返回的用户数
·
· 平均加载的时间
·
它的另一个便利的特点是Pulse。Pulse能够表明通过各种接近实时的事件,来显示当前网站的各种用户状态。通过它所提供的视图,您可以详细地查看到如下的信息:

· 加载的时间
·
· 各种会话的数量
·
· 各类用户的数量
·
· 24小时内的会话趋势
·
· 那些最近的请求
·
· 平均加载的时间
·
· 那些请求最多的网页
·
· 那些最近的崩溃
·
如果您深入到页面的级别,您还可以得到诸如为何页面表现不佳之类的综合信息,其中也包括DNS的查询、延迟、SSL的开销、页面生成以及传输的时间。
入门指南

使用上面的搜索栏输入关键字、短语或问题,搜索问题的答案。

我们希望您在这里的旅程尽可能顺利,因此这里有一些链接可以帮助您快速熟悉思科社区:









快捷链接