|
所在平台: Coursera |
课程主页: https://www.coursera.org/learn/troubleshooting-debugging-techniques
课程评论:没有评论
课程名称:故障排除与调试技巧 课程概述:本课程将为您提供工具,以快速识别和解决在IT角色中可能遇到的实际问题。我们将探讨多种策略和方法,以应对代码和IT基础设施中最常见的陷阱。您将学习如何处理几乎任何技术问题的策略,并了解这些策略如何应用于解决不同的实际场景。课程例子涵盖一般系统问题、他人编写的软件问题以及我们自己编写的程序问题。我们将讨论可能影响任何操作系统的问题,同时也会着眼于特定平台和脚本语言的挑战。 我们强烈建议您在参加本课程前完成本系列的先修课程,或者具备Python和Linux的相关知识,以便能跟上我们的故障排除示例。 课程大纲: 1. **故障排除概念**:介绍故障排除的基本原理,学习不同策略和方法来解决问题。了解调试的概念,以及它作为故障排除的核心原理。学习 tcpdump、ps、top、itrace 等工具在调试过程中的应用。掌握理解问题的关键,探讨重现错误和间歇性错误的不同应对方式。学习二分搜索问题的概念,并探索如何有效地查找CSV文件中的无效数据。 2. **慢速问题**:学习导致机器或程序变慢的因素,探讨识别瓶颈的方法。掌握使用iotop、iftop和MacOS的活动监视器等工具来识别被耗尽的资源。了解计算机资源的使用以及CPU、RAM和缓存之间的区别。学习怎么编写高效代码,使用分析器识别代码耗时的位置,并深入了解适合的结构体,如列表、元组、字典、集合,以及复杂的慢速问题解决方案,最终掌握使用线程提高代码执行效率。 3. **崩溃程序**:探讨“我的程序为何崩溃”的问题,学习如何排查系统和应用崩溃的原因,使用哪些工具来识别崩溃的原因,以及查看哪些日志文件。研究代码崩溃的原因及其预防措施,了解未处理错误和抛出异常的情况。学习调试技巧以识别这些错误,探讨如何在更大规模上处理崩溃和事件,强调在解决问题后信息沟通和文档记录的重要性。 4. **资源管理**:学习如何管理应用程序,识别常见问题以及导致应用崩溃的原因。深入了解内存泄漏及其故障排除、预防措施。学习如何管理磁盘空间和网络饱和问题,掌握识别占用空间的进程或应用程序。接着,从应用管理转向时间管理,获取任务优先级设定、任务时间估算及期望沟通的技巧。最后,学习如何分解复杂问题并规划未来资源的使用。
Name:Troubleshooting Concepts
Description:In this module, you’ll be introduced to the fundamentals of troubleshooting and you’ll learn different strategies and approaches to tackle problems that you might encounter. You’ll learn about the concept of debugging and how debugging is one of the core principles of troubleshooting. You’ll be introduced to some tools that will help you in the debugging process, like tcpdump, ps, top, itrace, and lots more. Next, you’ll explore how to “understand the problem.” This might sound like a no brainer, but it's not as easy as you might think! Next, we’ll dive into the different approaches when troubleshooting reproducing errors versus intermittent errors. Finally, you’ll learn about “binary searching a problem.” We’ll explore the different types of searches, including binary and linear searches. Then, we’ll learn about the concept of bisecting and how it can be used in your troubleshooting approach, and finish up with finding invalid data in a CSV file.
Name:Slowness
Description:In this module, you’ll learn about what factors can cause a machine or program to act slowly. You’ll dive into ways of addressing slowness by identifying the bottleneck that might be causing the slowness. You’ll learn about tools to identify which resources are being exhausted, including iotop, iftop, and activity monitor in MacOS. Next, you’ll learn how computers use resources, and understand the differences between CPU, RAM, and cache in order to help you find the possible causes for slowness in our machines or scripts.Next up, you’ll learn how to write efficient code, then explore profilers to help you identify where your code is spending most of its time. Next, you’ll dive into data structures and understand which ones are right for you to use. These include lists, tuples, dictionaries, sets, and expensive loops. Then, you’ll dive into complex slowness problems and how utilizing concurrency and adding a caching service can improve the execution of your code. Finally, you’ll understand how using threads can make the execution of your code much quicker.
Name:Crashing Programs
Description:In this module, you’ll get introduced to the age old question, “Why has my program crashed?” You’ll learn how to troubleshoot system crashes and application crashes, what tools can be used to help identify the cause of the crash, and what log files to look at in order to find what might have gone wrong. Next, you’ll dive into investigating why code crashes, and what you can do to prevent that from happening. Then, you’ll explore what happens when an unhandled error occurs and throws an exception. You’ll learn about several debugging techniques, which will help you identify these errors and exceptions. Finally, you’ll explore the concept of handling crashes and incidents at a much larger scale. You’ll delve into a scenario where a large eCommerce site will throw an error 20% of the time. Once that issue has been fixed, you’ll understand the importance of communication and documentation during these incidents, and how writing a post mortem can prevent issues from happening again.
Name:Managing Resources
Description:In this module, you’ll learn how to manage your applications. You’ll dive into some common issues that may cause your application to crash. You’ll also understand what memory leaks are, and how to troubleshoot and prevent them. Up next, you’ll run down managing disk space; you’ll see some scenarios of how this happens and how to identify what process or application is taking up all your disk space. Then, you'll learn what network saturation is, how it can be caused, and some useful tools and techniques to solve a network saturation problem. Next, we’ll shift from managing applications to managing your time. You’ll get tips on how to prioritize tasks, estimate how long a particular task will take before finishing, and communicate expectations when dealing with important tasks. The final lesson delves into how to deal with hard and complex problems by breaking it down into small, digestible chunks while keeping your eyes on a clear goal. You’ll learn that using proactive approaches, like continuous integration, can help you with future issues that might come up. You’ll also explore how to plan for future resource usage by making good use of monitoring.
In this course, we'll give you the tools to quickly identify and solve real-world problems that you might come across in your IT role. We'll look at a bunch of different strategies and approaches for tackling the most common pitfalls of your code and IT infrastructure. You'll learn strategies for approaching almost any technical problem and then see how those apply to solving different real-world scenarios. We picked examples that include general system issues, issues with software that someone else wrote, and issues with programs that we wrote. We'll talk about problems that can affect any operating system, and we'll also look at challenges specific to certain platforms and scripting languages. We strongly recommend that you’ve taken the prior courses in this program, or already have knowledge of Python and Linux so that you can follow along with our troubleshooting examples.