mirror of
https://github.com/Hizenberg469/GDB-tutorial.git
synced 2026-04-19 22:02:23 +03:00
debugging technique
This commit is contained in:
@@ -2,4 +2,74 @@ DEBUGGING TECHNIQUES:
|
|||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
||||||
|
-> Delta Debugging:
|
||||||
|
++++++++++++++++
|
||||||
|
|
||||||
|
|
||||||
|
It is a technique like binary search, where we can decrease the section
|
||||||
|
under analysis to find bugs.
|
||||||
|
|
||||||
|
Like, we can use multiple breakpoints to the program and see
|
||||||
|
where the program faces issue and when it faces. It could
|
||||||
|
face the issue before some breakpoint could be reached or
|
||||||
|
after some breakpoints are encountered.
|
||||||
|
This way we can reduce our search space and section of analysis.
|
||||||
|
|
||||||
|
|
||||||
|
-> Assertion:
|
||||||
|
++++++++++
|
||||||
|
|
||||||
|
|
||||||
|
assert(): It check if the assumption which is passed
|
||||||
|
as an argument is true. If it isn't, the
|
||||||
|
program will Abort and core dumped.
|
||||||
|
|
||||||
|
This is for runtime check and the program
|
||||||
|
is part of C library.
|
||||||
|
|
||||||
|
To use it we need #include <cassert> statement
|
||||||
|
in C++ program.
|
||||||
|
|
||||||
|
static_assert(): It check the assumption at compile time
|
||||||
|
and throw compilation error if the
|
||||||
|
assertion fails.
|
||||||
|
|
||||||
|
|
||||||
|
This is helpful where we can evaluate
|
||||||
|
variable as constant expression using
|
||||||
|
constexpr keywords, which could help
|
||||||
|
in static assertion failure.
|
||||||
|
|
||||||
|
|
||||||
|
-> Investigating Code by Calling functions within GDB:
|
||||||
|
+++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
|
||||||
|
* We can call a function from GDB when haven't reached
|
||||||
|
the point where we execute the function.
|
||||||
|
|
||||||
|
We can do function call from GDB itself.
|
||||||
|
|
||||||
|
We can use...
|
||||||
|
|
||||||
|
Command:
|
||||||
|
(gdb)call <function-name>( <arguments>.... )
|
||||||
|
|
||||||
|
|
||||||
|
-> Attaching the Debugger to a Running Process:
|
||||||
|
++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
To attach a running to process to a gdb.
|
||||||
|
|
||||||
|
Command:
|
||||||
|
$gdb -p <process-id>
|
||||||
|
|
||||||
|
We can get the process id using below command:
|
||||||
|
|
||||||
|
$ps aux | grep <process-name>
|
||||||
|
|
||||||
|
To Detach a process and let it run, we can use
|
||||||
|
command:
|
||||||
|
(gdb)detach
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user