So the previous year, we have written out our program, assembly language, and now we are going to
see how to rebuild our program.
For that, we need to have a debugger to develop the program.
And the GDP is one of the typical duty which stands for Guerrouj bonus debugger and duty is the common.
And the worker for Linux come and the worker means we need to give some comments in order to deploy
the program.
Like means we need to do the command to see the sebu instructions.
We need to give the command to see the registered values and like that.
First, we need to do some comments to you, anything.
But if you're debugging a lot of complex code and you need to enter again and again, that's why they
have created so many guys have created the plugins and one of the protagonists para plugin, it helps
to visualize the resistance and step.
It means that when you step stepping through the program, this program will show you the rejecters
and the CPU instructions and the stack.
So you don't need to type more commands to do the ridiculousness that this will do it for you.
Actually, this project uses the concept of GDP Hooke's.
So whenever you step through the program, the scripts and the hooks are being executed.
First in this video, we'll be seeing how normal you comment and then we really start to propagate and
we will see how serious are these features and stuff.
So GDP is the user, the worker.
So I know up up to my knowledge, I think the derivs user, more debugger.
It cannot be what the kernel programs.
And also there are many good.
Which is just better.
So if you take a look at this UDP debugger for Linux, it has some graphical user interface.
So it's it's like sort of the military budget, which is also a graphical user interface.
So this is a graphical user interface debugger which uses GDP as bakin.
So when you click the button button next button, then it will use the GDP as well.
So guess now we'll move on to our virtual machine and then we will deploy the program.
Oh, we have our program binary and the source code and the clip.
Now we can deploy the device with this binary file.
Now, what I'm going to do is I'm going to space and Carandiru, I want to find this beautiful Goodbee
space filename.
Now, if I hit Enter now, the prompt has been changed to some brackets.
And here this is the duty we from you need to enter the comments relative to GDP.
So the first comment I'm going to show is in four functions.
So if you type in for functions, the functions in our program will be shown here.
So there are different functions.
So we do not explicitly define a function, but there is some symbol, Carlstadt underscore, because
this is the starting point of the program and you can see the address of this function.
Now, if I want to use the code from the start function, I can disassemble UDP has some basic because
I'm ready to disassemble the code and convert it to the assembly language.
Now, what I want to say is this is No.
Not if I take business and then if I hit the button, it will come for us.
I learned that the system will start.
Now, you can see the summary court for our program and if you can see the syntax is somewhat different
because it is reality and this index, it is much harder to learn.
Now, we can convert this index into the index index.
By doing this said disassembly flivver.
Said this is somebody forever to know what we're going to lose, we need to disassemble the start function
again.
Now you can see our simple assembly syntax, which is in this index.
Now, this is the exact way our code we have written in our source code.
You can see moving Ebix Syriacs, the arguments of the right system and then, yes, the actual number
of the system and then guardedness of the printer and then across we are moving the exit and the register.
So I did not tell this before I went where I I'm debugging.
I have got an error.
So I have put the exit of Geto and then I have Cardus after.
And so in order to step through this instruction by instruction, we need to set the breakpoint at the
start of this address.
We can set the breakpoint by Longbrake and the address of the instruction, or if you don't know the
address, you can simply state can simply say the function name.
He said a break and start.
So it will set the breakpoint at this address which used this address, which is our first instruction.
Now, if you want to see the registers, I mean earthquakes and UTX and so on, we need to type in four
registers.
So since our program is not running, we have no resistance, no, no, I'm going to run the program.
I say run.
So our break point one has been hit and the program has been stopped.
Now, if you see the registers now you can see IAP has been shown to the starting of instruction not
to see the other instructions again.
We need to disassemble the start function again.
So I said this is a start, and then you can see one thing newly here is the arrow mark.
This arrow points to the next section to be executed, which is this one, which is our first section.
So up to now, our program has never been executed.
Now we are going to execute the fashion section.
So to execute the only one instruction step by step, we need to sit next ay, which is next.
Exactly, it's the next instruction.
Only now if I the next day and you turn to.
Now, it's just this one, this addresses the second instruction and the breakpoint has been heated,
this instruction.
Now, if I disassemble again the start, you can see the ademar change it from disastrous to second
address.
So it means that the first section has already been executed.
What is the fashion section means?
More e-books.
Come on.
It means that we are copying one value into it.
So let's check whether our image has value, one or not, to do that.
I mean, for instance, and you can see your works and ethics and so on up to Evertz and then Ebix,
where there is one.
So that construction has been executed and the value of one is comparable ebooks.
Now, as you can see, the next instruction is more you see on this address.
So I don't know what that do.
So let me copy this.
So to get a value at that address, we have the XCOM extends, for example.
And what you want to do is actually slash you need to do the British.
Sorry, OK, we are going with David address, so I want to bring to the.
So I want to bring the contents of this address and I have got this, so it's not readable format because
we don't know what it is I'm going to say, yes, it stands for string.
So examined spring at this address.
If I hit enter, we get the hollow world, which is our actual string that is stored in the argument
of the right system called.
So this year, this is how you view the contents of that address, using the examine and examine at
the top of the data you need to print and address.
And we can also say, excuse me, I want to bring Turbit's from that address and we can see the first
one is horrible and then it will print Leventhal's because there is no date at the.
OK, now I again disassemble the.
Start.
And then this injunction is going to be executed next.
Now let's run that construction.
Now you can see the another breakpoint is in the year, and now if I get disassemble the start, we
can see the arrow more to the disvalue and then suction more.
This atrous into the X has been completed.
And you can see I have mentioned the injection pointer.
Which point?
RECONNECTION instruction since the zero mark is pointing to this address.
Let's see if our Yabe resistor how these orders are not to do that you need to search in for.
Registers, as you can see, the EPA's injunction points and addresses the exactly that amount pointing
to because it's the next instruction to be executed.
Now, as you can see, since this instruction has been executed, we must help you see where you as
deserters.
Let's take that so easy here.
And the value of these orders has been placed here.
So the next injection is going to be this one, and if I say next, I.
Again, this is only the start we can see this this instruction has been executed and the next is going
to be this one.
So if I execute again next instruction and then the next instruction is going to be our software and
drop.
And at this point, our registers content.
Exactly.
The arguments of our rail system.
No, I'm going to do the next instruction.
Now, this internal software will involve the system, Koranda and our rights to execute it when order
system is executed, our arguments and the size and those that will be printed onto the screen.
That is how the world is going to be printed on the screen.
I'm going to hit enter.
As you can see, the whole world is printed because this involves the system and then our system has
been executed.
Now, if I disassemble the start, you can see this is the system called.
No story, no one is the number of the right to call and exit of it safe registered program.
The next day, next day and then again, it is a somber note.
We are going to call this if Tom Kahaner and it was in the system, call it system call.
Now, the program exists normally.
Now, you can see in the process the process already existed normally, so we have learned how to set
the breakpoint and how to step through the program and how to check the various registers and so on.
So this is very somewhat tedious task.
The need to tie up the command every time, whenever you are stepping through the program, know what
they're going to do is I'm going to quit the derivative of that.
No, I'm going to install a project called again.
So in Google, you take the GDP and the first one is the public click on that.
Now, if you come down, this is the installation process, these planes are installation process.
This is just printing output.
So let me copy this.
I am sorry.
I don't know, it's not coming.
OK, just let me open the browser in Firefox.
I think maybe was has been not installed recently.
This one two machine has been updated without my permission.
That's what we want to use.
And that update has been crashed, the young drivers.
So now we are going to crown this repository to our home for the.
It is also not installed, let us install that.
So there is no hard that has been installed that has grown in the past three.
So now we need to point the bird up, I don't feel to be in it so that when out of the GDP our pet gets
Rodek.
Now we are going to repeat the same process as returning the normal GDP.
As you can see in the previous normal GDP, it has the GDP current, but now the problem has been Janica
GDP, Fonterra, it means that there are now some functions.
I mean, commands.
We can execute them also.
This can also be helpful in the experiment perspective also, but that's another topic.
Now we have to get the same comments as in our previous regular GDP.
So if I say in full function, it says that there is a underscore.
Now, let me discuses, disassemble it and have completion.
I and it is.
It shows us some real, but the you can see the default when we first excluded the decision to start,
we have the Energy and peace index, we got data in this index.
But this will already set the default assembly forever as intended.
So whenever you run, the discussion will start, you get automatically the entire flavor.
Now, there is one more comment, which is like modification of this has no comment.
That is predecessor.
I guess this also disassembles our function, but I don't know why there is no color syntax.
OK, now let's let's skip that.
Now, what I'm going to do is I'm going to set the breakpoint at our start function.
Now, as you can see, Breakpoint has been set at this address, which is our first financial action,
not what I'm going to lose.
I'm going to sit next to I'm sorry I did not run the program.
OK, now you can see whenever we run the program, the program has been started from the absolute final
part.
And then here, this program has already executed some court and that court shows us the registers,
as you can see, X, Ebix and so on, up to including extended flight registers.
And this here, you can see the CPU instructions, this is our first.
We have seen that this is somebody it you come on as you can see this and there are also highlights
the instruction that is going to be executed.
You can see the atmosphere here.
That means that decisions are going to be executed next.
And it also highlights this instruction in the green color and the remaining as a white color.
And.
It also shows us the stack, the stack, and this is the starting of the stack and the stack grows from
higher interest to the right address.
And if you can see the first, the program's absolute file part has been loaded onto the stack.
And then you can see the stack whenever you will be seeing this stack.
When we encounter the push and pop operations now at the down, you can see the breakpoint, one at
addressing the stack.
So this in this way, you can easily no need to type the info registers because there is just because
operation registers for you and you don't need to disassemble again to see the instructions because
barisha in the instructions for you and you can also see the stack at the same point.
So I can simply sit next to you next time.
No, I can simply see this registers and also the stack at the same time.
So this is like automating some duty books.
So next, I know we can see that UTX value is the address and ADR does it also, which is the contents
of that address and it displays.
As for us, the PA.
Hello.
So it's somewhat so much easier and convenience than normal duty.
I recommend you to also use the GDP first and then of bringing.
And now if we are going to invoke the right system, if I hit enter and know how the Harold has been
murdered, so I just hit enter because the previous instruction in each day, no, I did not give any
comment.
And then if I had under the previous instruction, would it be that our new instruction, I mean previous
comment will be the our new command.
So it will invoke it will execute the last command and then now we are invoking the system.
Now our program exists.
You can see programming normally and not running, and you can also could be using good command.
So in this way, we can just debug the program with GDP and also with better plugging.
So from this we rely on what if I want to debugging new program I will be showing in the.
But I also suggest you to learn some basic GDP comments, those will be very helpful.