- 博客(1)
- 资源 (1)
- 收藏
- 关注
原创 2014-12-1 xen上的vuart
在ARM上调试xen、linux的时候printk和early_printk都是非常重要的方式。即使有DSTREAM,还是一定会用到屏幕或串口输出。但ARM平台上不像X86那样有bios里的基本的VGA支持,LCD一般都启动的比较靠后了。所以通过串口输出很重要。 在用xen里作为dom0跑linux的时候, 会遇到linux串口的输出不见了。原因是xen起来后自己要用,就对dom0屏蔽了串口。L
2014-12-01 17:40:39 758
Self-Service Linux
WHATIS THISBOOKABOUT?
In a nutshell, this book is about effectively and efficiently diagnosing problems
that occur in the Linux environment. It covers good investigation practices,
how to use the information and resources on the Internet, and then dives right
into detail describing how to use the most important problem determination
tools that Linux has to offer.
Chapter 1 is like a crash course on effective problem determination
practices, which will help you to diagnose problems like an expert. It covers
where and how to look for information on the Internet as well as how to start
investigating common types of problems.
Chapter 2 covers strace, which is arguably the most frequently used
problem determination tool in Linux. This chapter includes both practical usage
information as well as details about how strace works. It also includes source
code for a simple strace tool and details about how the underlying functionality
works with the kernel through the ptrace interface.
Chapter 3 is about the /proc filesystem, which contains a wealth of
information about the hardware, kernel, and processes that are running on
the system. The purpose of this chapter is to point out and examine some of the
more advanced features and tricks primarily related to problem determination
and system diagnosis. For example, the chapter covers how to use the SysRq
Kernel Magic hotkey with /proc/sys/kernel/sysrq.
Chapter 4 provides detailed information about compiling. Why does a
book about debugging on Linux include a chapter about compiling? Well, the
beginning of this preface mentioned that diagnosing problems in Linux is
different than that on commercial environments. The main reason behind this
is that the source code is freely available for all of the open source tools and
the operating system itself. This chapter provides vital information whether
you need to recompile an open source application with debug information (as
is often the case), whether you need to generate an assembly language listing
for a tough problem (that is, to find the line of code for a trap), or whether you
run into a problem while recompiling the Linux kernel itself.
xix Preface
Chapter 5 covers intimate details about the stack, one of the most
important and fundamental concepts of a computer system. Besides explaining
all the gory details about the structure of a stack (which is pretty much required
knowledge for any Linux expert), the chapter also includes and explains source
code that can be used by the readers to generate stack traces from within their
own tools and applications. The code examples are not only useful to illustrate
how the stack works but they can save real time and debugging effort when
included as part of an application’s debugging facilities.
Chapter 6 takes an in-depth and detailed look at debugging applications
with the GNU Debugger (GDB) and includes an overview of the Data Display
Debugger (DDD) graphical user interface. Linux has an advantage over most
other operating systems in that it includes a feature rich debugger, GDB, for
free. Debuggers can be used to debug many types of problems, and given that
GDB is free, it is well worth the effort to understand the basic as well as the
more advanced features. This chapter covers hard-to-find details about
debugging C++ applications, threaded applications, as well as numerous best
practices. Have you ever spawned an xterm to attach to a process with GDB?
This chapter will show you how—and why!
Chapter 7 provides a detailed overview of system crashes and hangs. With
proprietary operating systems (OSs), a system crash or hang almost certainly
requires you to call the OS vendor for help. However with Linux, the end user
can debug a kernel problem on his or her own or at least identify key information
to search for known problems. If you do need to get an expert involved, knowing
what to collect will help you to get the right data quickly for a fast diagnosis.
This chapter describes everything from how to attach a serial console to how
to find the line of code for a kernel trap (an “oops”). For example, the chapter
provides step-by-step details for how to manually add a trap in the kernel and
then debug it to find the resulting line of code.
Chapter 8 covers more details about debugging the kernel or debugging
with the kernel debugger, kdb. The chapter covers how to configure and enable
kdb on your system as well as some practical commands that most Linux users
can use without being a kernel expert. For example, this chapter shows you
how to find out what a process is doing from within the kernel, which can be
particularly useful if the process is hung and not killable.
Chapter 9 is a detailed, head-on look at Executable and Linking Format
(ELF). The details behind ELF are often ignored or just assumed to work. This
is really unfortunate because a thorough understanding of ELF can lead to a
whole new world of debugging techniques. This chapter covers intimate but
practical details of the underlying ELF file format as well as tips and tricks
that few people know. There is even sample code and step-by-step instructions
xx Preface
for how to override functions using LD_PRELOAD and how to use the global
offset table and the GDB debugger to intercept functions manually and redirect
them to debug versions.
Appendix A is a toolbox that outlines the most useful tools, facilities, and
files on Linux. For each tool, there is a description of when it is useful and
where to get the latest copy.
Appendix B includes a production-ready data collection script that is
especially useful for mission-critical systems or those who remotely support
customers on Linux. The data collection script alone can save many hours or
even days for debugging a remote problem.
2015-02-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人