. It is the most common way for the kernel to inform users of the unfortunate occurrence.The kernel can only publish oops. This process includes outputting error messages to terminals, outputting information stored in registers, and outputting tracing clues for tracking. Generally, after oops is sent, the kernel is in an unstable state.There are many possible causes for
/sys not only provides kernel information, but it can also modify kernel parameters. To change the kernel parameters, you can redirect the vi edit or echo + parameter to the file:
# echo 8192 >/proc/sys/fs/file-max
"About security issues invoked by the ksyms lkm"
Symbol table declarations that can bypass LKM calls
static struct symbol_table module_syms= {
#include
...
};
Register_symtab (module_syms);
Register_symtab (NULL);
"About the relationship between System.map and kernel error
errors, such as the content of CPU registers. It is the most common way for the kernel to inform users of the unfortunate occurrence. The kernel can only publish oops. This process includes outputting error messages to terminals, outputting information stored in registers, and outputting tracing clues for tracking. Generally, after oops is sent, the kernel is in an unstable state. There are many possible c
From: http://blog.chinaunix.net/space.php? Uid = 24219701 Do = Blog id = 2876128
Kernel-level programs always crash. If you are lucky, you will see some so-called "oops" Information (on the screen or in system logs)
For example:
Unable to handle kernel paging request at virtual address f899b670
Printing EIP:
C01de48c
* PVDF = 00737067
Oops: 0002 [#1]
Modules linked in: bluesmoke_e752x bluesmoke_mc MD5 I
Article title: Kerneloops bridges error reports between Linux users and developers. Linux is a technology channel of the IT lab in China. Includes basic categories such as desktop applications, Linux system management, kernel research, embedded systems, and open source.
When the Linux system crashes, what people see is not the classic "blue screen" phenomenon of Microsoft Windows operating system. Instead, they display the system crash report signature (known as "
can select other output files. Figure 1 X-rays of this process:Four,OOPSOOPS (also known as Panic) messages contain details of the system error, such as the contents of the CPU registers. Is the most common way the kernel informs users of the unfortunate occurrence. The kernel can only publish Oops, which includes outputting error messages to the terminals, outputting the information stored in the registers, and outputting traceable clues that can be
When I browsed the stackoverflow website a few days ago, I accidentally saw the question "How to Avoid 'if 'chains" raised by others. I think this is a problem that programmers can easily encounter during programming, I also encountered this programming method when I was reading some source code. Therefore, I would like to summarize this problem.
There are many cases of if nesting. The following lists some situations and provides relatively simple writing methods for your reference:
1. Use a gua
in the command line is displayed, if it is displayed, the command entered is visible, and the command that indicates input is not visible.Sstecho.c#include #include #include #define OOPS (s,x) {perror (s); exit (x);}int main (int argc, char *argv[]){struct Termios info;if (argc = = 1)Exit (0);if (tcgetattr (0,info) = =-1)/* Get attribs */Oops ("Tcgettattr", 1);if (argv[1][0] = = ' Y ')Info.c_lflag |= ECHO;
Exceptions are important for a language, and exception stack information is particularly important for developers because the exception stack can be used to find the first place to throw an exception. But there are not many people who know the right thing to throw an exception.
First of all, here are the worst
Def revert_stuff ():Pass
Def some_code ():Raise Exception (' Oops, some error occur ')
TrySome_code ()ExceptRevert_stuff ()Raise Exception
Call Trace can print the current stack of function calls. kernel state Call Trace
There are three types of error in the kernel state, namely bugs, oops and panic.
Bugs are minor errors, such as calling sleep during spin_lock, causing a potential deadlock problem, and so on.
Oops represents a user process error and needs to kill the user process. At this point, if the user process consumes some signal locks,
with the highest priority), it cannot update the corresponding counter variable, the NMI Watchdog interruption of each CPU periodically checks the counter corresponding to its CPU. If no updated is found, panic () is called, and the user can use kdump to collect memory information, analyze the call stacks on each deadlocked CPU to find out the logical cause of the deadlock.
C) kernel oops or warning
Oops,
solve
Record maintenance is more convenient
Cons: Information may be lost.
18.3.4 syslogd and Klogd # # #This is the daemon for two user spaces, klogd the kernel messages from the record buffer, and then saves them in the system log file through the syslogd daemon. -KLOGD- 既可以从/proc/kmsg文件中,也可以通过syslog()系统调用读取这些消息。- 默认是/proc方式。- 两种情况klogd都会阻塞,知道有新的内核消息可供读出,唤醒之后默认处理是将消息传给syslogd。- 可以通过-c标志来改变终端的记录等级
Syslogd
Add all the messages it receives to a file, whic
Linux Device Driver Article 4: Driver debugging methods, linux Article 4
In the previous article, we probably talked about how to write a simple character device driver. We are not a god, but there will certainly be a problem when writing code. We need to continuously debug it during the code writing process. In common c applications, we often use printf to output information or use gdb to debug the program. How can we debug the driver? We know that the common problem encountered during program
Tenth chapter System level I/OCp1#include ); int main (int argc, char *Argv[]) {int in_fd, OUT_FD, n_chars;//three descriptor values char buf[buffersize];//memory location/*CP parameters are two, respectively, the file to be copied, and the destination directory, so altogether there should be three operations Number so first check whether the value of ARGC is three, if not, return the standard error */if (argc! = 3{fprintf (stderr, "Usage:%s source destination\n", *ARGV); Exit (1); }/* Check the
18th Chapter Commissioning18.1 ready to start1, in the user-level program, the bug performance is more straightforward, but not clear in the kernel.2, kernel-level development of debugging work far more difficult than user-level development.3. The preparatory work needs to be: (1) A bug(2) A kernel version that hides bugs(3) Knowledge and luck related to kernel code18.2 bugs in the kernel1. There are various bugs in the kernel.2. Referencing a null pointer produces a
bracketsPer_source = 1 // 3. Add it to brackets.Instances = 200 // 4, added in bracketsAccess_times =-// 5, added in brackets
FTP client connection failuresSymptom 0:> Ftp: CONNECT: the connection is rejected.Cause: the service is not started.Solution: # chkconfig vsftpd on
Symptom 1:500 Oops: cannot open user list fileCause: the file "/etc/vsftpd. user_list" does not exist or the account does not exist in the file.Solution: # echo username>/etc/
First, write a personal favorite debugging skills.1. Open Config_debug_kernel in Menuconfig2. objdump-d-S (uppercase) *.O > file can get mixed C and assembly codeOr make *.lst can get it.3. Addr2line-f-E vmlinux address (0xcxxxxxxxx) to get the address corresponding to the function name and the number of rows in the file4. Based on oops information, view the value of R13 (SP), R14 (LR), R15 (PC) register, ARM architecture? printk? Debug support in the
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.