iOS Flash-back capture

Source: Internet
Author: User
Tags terminates

Main content

I. Information transfer process of Flash back

Second, UNIX signal catch exception

Third, Nsuncaughtexceptionhandler catch exception

Iv. Summary

V. Reference links

I. Information transfer process of Flash back

The underlying kernel generates a Mach exception, and sends out a UNIX signal by conversion; So we can listen to the UNIX signal to get the flashback information, of course, if the catch Mach anomaly to get more accurate, after all, one less step conversion

Second, UNIX signal catch exception

1, about the signal

1)SIGHUP
This signal is issued at the end of the user terminal connection (normal or abnormal), usually at the end of the control process of the terminal to notify the same session of the various jobs, when they are no longer associated with the control terminal. When you log in to Linux, the system is assigned to a terminal (Session) of the logged-on user. All programs running at this terminal, including the foreground process group and the background process group, usually belong to this Session. When the user exits the Linux login, the foreground process group and the background will receive a sighup signal to the terminal output process. The default action for this signal is to terminate the process, so the foreground process group and the process that has terminal output in the background will be aborted. However, this signal can be captured, such as wget can capture the sighup signal, and ignore it, so even if you quit the Linux login, wget can continue to download. In addition, for daemons with terminal disengagement, this signal is used to notify it to reread the configuration file.
2)SIGINT
A program termination (interrupt) signal, issued when the user types the intr character (usually ctrl-c), to inform the foreground process group that the process is terminated.
3)Sigquit
Similar to SIGINT, but controlled by the quit character (usually ctrl). The process generates a core file when it receives a sigquit exit, similar to a program error signal in this sense.
4)Sigill
An illegal instruction was executed. This is usually due to an error in the executable file itself or an attempt to execute a data segment. This signal can also be generated when a stack overflows.
5)SIGTRAP
Generated by a breakpoint instruction or other trap instruction. Used by debugger.
6)SIGABRT
Invokes the signal generated by the abort function.
7)Sigbus
Illegal address, including memory address alignment (alignment) error. For example, a four-word integer is accessed, but its address is not a multiple of 4. It differs from SIGSEGV in that the latter is triggered by illegal access to a legitimate storage address (such as Access does not belong to its own storage space or read-only storage space).
8)SIGFPE
Emitted when a fatal arithmetic operation error occurs. This includes not only floating-point arithmetic errors, but also all other arithmetic errors such as overflow and divisor 0.
9)SIGKILL
Used to immediately end the run of the program. This signal cannot be blocked, processed, or ignored. If an administrator discovers that a process is not terminating, try sending this signal.
10)SIGUSR1
Leave it to the user
11)SIGSEGV
An attempt was made to access memory that is not assigned to itself or to write data to a memory address that does not have write permissions.
12)SIGUSR2
Leave it to the user
13)Sigpipe
Pipe rupture. This signal is usually generated between interprocess communication, such as two processes with FIFO (pipeline) communication, the read pipeline is not opened or terminated unexpectedly to the pipeline to write, the writing process will receive sigpipe signal. In addition, two processes with the socket communication, the write process when the socket is written, the read process has been terminated.
14)SIGALRM
A clock timing signal that calculates the actual time or clock time. The alarm function uses this signal.
15)SIGTERM
The end of program (terminate) signal, unlike Sigkill, is that the signal can be blocked and processed. Typically used to require the program to exit gracefully, the shell command kill generates this signal by default. If the process does not stop, we will try to Sigkill.
17)SIGCHLD
The parent process receives this signal at the end of the child process.
If the parent process does not process the signal and does not wait for the (wait) child process, although the child process terminates, it also occupies the table entry in the kernel process table, when the child process is called a zombie process. In this case we should avoid (the parent process either ignores the sigchild signal, or catches it, or wait for its derived child process, or the parent process terminates first, and the termination of the child process is automatically taken over by the Init process).
18)Sigcont
Let a stop (stopped) process continue execution. This signal cannot be blocked. You can use a handler to get the program to do certain work when the stopped state changes to continue. For example, to re-display the prompt
19)SIGSTOP
Stop (stopped) the execution of the process. Notice the difference between it and terminate and interrupt: The process is not over yet, just pause execution. This signal cannot be blocked, processed or ignored.
20)SIGTSTP
Stops the process from running, but the signal can be processed and ignored. This signal is emitted by the user when typing Susp characters (usually ctrl-z) sigttin
When a background job wants to read data from the user terminal, all processes in the job receive a sigttin signal. By default, these processes stop executing.
22)Sigttou
Similar to Sigttin, but received when writing a terminal (or modifying terminal mode).
23)Sigurg
When there is "emergency" data or Out-of-band data arrives at the socket.
24)sigxcpu
CPU time resource limit exceeded. This restriction can be read/changed by Getrlimit/setrlimit.
25)Sigxfsz
When the process attempts to enlarge the file so that it exceeds the file size resource limit.
26)SIGVTALRM
Virtual clock signal. is similar to SIGALRM, but calculates the CPU time that is consumed by the process.
27)sigprof
Similar to SIGALRM/SIGVTALRM, but includes the CPU time used by the process and the time of the system call.
28)Sigwinch
emitted when the window size changes.
29)SIGIO
The file descriptor is ready to start the input/output operation.
60LSIGPWR
Power failure
31)Sigsys

Illegal system calls

In the signals listed above, the program can not capture, block or ignore the signal is: sigkill,sigstop
Signals that cannot be restored to the default action are: Sigill,sigtrap
The default causes the process to abort the signal is: Sigabrt,sigbus,sigfpe,sigill,sigiot,sigquit,sigsegv,sigtrap,sigxcpu,sigxfsz
The signal that causes the process to exit by default is: SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM
The signal that causes the process to stop by default is: Sigstop,sigtstp,sigttin,sigttou
The default process ignores signals such as: Sigchld,sigpwr,sigurg,sigwinch

2. Registered monitoring mode

Signal (SIGFPE, Signalexceptionhandler);

3, the need to pay attention to the place

It is not possible to receive the signal signal (Nsuncaughtexceptionhandler Normal) when running directly on the simulator, but it is OK to close the build and then open the generated app on the emulator.

Third, Nsuncaughtexceptionhandler catch exception

1, UNIX signal since you can catch the exception so what's the Nsuncaughtexceptionhandler to do?

UNIX signal capture Flash-back

Nsuncaughtexceptionhandler captured Flash-back

found that the information acquired by UNIX signals is a bit incomplete when Nsuncaughtexceptionhandler can get the flashback information

2. How to use: Nssetuncaughtexceptionhandler (&uncaughtexceptionhandler)

Iv. Summary

1, Nsuncaughtexceptionhandler can get to the application layer of most problems, but for some memory problems and in addition to the 0 problem is not captured, this can be through the UNIX signal, when both can capture the system will ignore the UNIX signal, When only the UNIX signal can be captured when the information captured is still relatively complete, so the use of both is best;

The following is a SIGFPE exception for a UNIX signal

2. Source code can be found on my github

V. Reference links

1, ramble about iOS crash collection frame (read the blog don't know why always can't open)

2. iOS exception capture

3. Unix Signal

4. Understanding IOS Exception Types

iOS Flash-back capture

Contact Us

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.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.