Wait, but Who's Debugging the Debugger?!

  Рет қаралды 33,663

Tsoding Daily

Tsoding Daily

9 ай бұрын

- Music: / @nu11_ft
- The GDB frontend for Linux: github.com/nakst/gf

Пікірлер: 179
@nakst6528
@nakst6528 9 ай бұрын
Thanks for the bugfixes. A few tips when using gf2: - "skip to" (shift+click) does not do what you think it does! You are getting it confused with "run until" (ctrl+click) - You can change the default size of the watch window, see the "User interface" section of the README - The "traffic light" is the coloured box in the bottom left corner of the window :)
@TsodingDaily
@TsodingDaily 9 ай бұрын
Thank you so much! I definitely need to spend some time reading the README. There are so many things I'm missing. :D
@bashbarash1148
@bashbarash1148 9 ай бұрын
Imagine to debug a C application via C debugger via C debugger to find that problem was in Python
@monad_tcp
@monad_tcp 5 ай бұрын
Python is always the problem. It's load bearing. I just broke my Linux yet again because it is a Debian and I tried to update libinput because of python, it refused and updated python3 back to match it. (to be fair, I did random pokery with dpkg) Why do we have DLL hell in Linux in 2023. Is that Windows XP ? maybe it's my fault for using Debian, maybe Debian is stable bugs forever. Maybe Linux can't afford having a SxS and becoming a 30GB OS only because I wanted to have 2 versions of libinput. Maybe I should just nuke everything and make my own Linux from scratch instead. Anyway it's my fault for using Linux to begin with, or wanting to use KDE with Wayland. Also, Clang17 needs an Old GCC10 to run. Why, why. Sometimes I think Windows is better because I don't suffer too much trying to change things and I can't see how bad and shit the code is, so I don't try to fix it. It's all Python's fault. Why can Debian have 4 different versions of Python3 at base. Why's every thing hanging on libinput, is like libC of KDE. Why does the thing that loads shite into the D-bus from the server side needs to be the same as the shite from the KDE/QT side, never mind I don't want to know, maybe they're sharing binary data and pointers. Anyway , sorry for the rant. And it's python fault , it's all pythons fault .
@lorenzocalza9960
@lorenzocalza9960 4 ай бұрын
@@monad_tcpmove to a rolling release distro or a distro based on fedora. You’ll thank me later :P
@pookiepats
@pookiepats Ай бұрын
@@monad_tcp in a rage against python I ran a command to eliminate it globally and it broke Ubuntu(WSL), I hate Python's fat hefty arse
@aarovprasad391
@aarovprasad391 9 ай бұрын
This is like watching an artist at work
9 ай бұрын
Well you are watching an actual artist.
@bacon-SG
@bacon-SG 9 ай бұрын
13:20 That feeling that all programmers get to feel. "I thought this would be an easy fix, but looks like we have to go deeper"
@rootsudosu
@rootsudosu 9 ай бұрын
47:20 "we fixed the debugger, now lets fix my application" XD XD
@user-bn4wn7ll3e
@user-bn4wn7ll3e 9 ай бұрын
Who compiles the compiler? In what text editor the text editor is written? What analyzer is used to analysis the source code of the analyzer? And who's debugging the debugger?
@darukutsu
@darukutsu 9 ай бұрын
Who comments on comments?
@CertifiedDynamite
@CertifiedDynamite 9 ай бұрын
As per the LFS installation manual: "To compile a compiler, you will need a compiler."
@ace5331
@ace5331 9 ай бұрын
C is written in C and Java is written is Java, and many other languages is written in itself. Eventhough it's understandable, still sounds fascinating 😄
@rj7250a
@rj7250a 9 ай бұрын
​@@ace5331the Java std library is written in Java, but the JVM is in C++. An interpreted language can not be self hosted. You could run the Java JVM in the C++ JVM, but then you would have to maintain 2 versions, so it would be pointless.
@hetias
@hetias 9 ай бұрын
_tsocrates_
@TEHNOTRAHER
@TEHNOTRAHER 9 ай бұрын
me: mom can i go to cinema to watch "Inception" mom: we have "Inception" at home "Inception" at home 7:20
@thakeenathees2342
@thakeenathees2342 9 ай бұрын
I was just typing this coment and saw this
@apenaswellignton
@apenaswellignton 9 ай бұрын
it made my brain go smooth
@aciddev_
@aciddev_ 9 ай бұрын
tsodin: fix bug in debuger: easy write comment message: *imposible.*
@ynchen
@ynchen 9 ай бұрын
WHAT ARE YOU WORKING ON? TRYING TO FIX THE PROBLEMS I CREATED WHEN I TRIED TO FiX THE PROBLEMS I CREATED WHEN I TRIED TO FIX THE PROBLEMS I CREATED WHEN...
@ThatManFromGermany
@ThatManFromGermany 9 ай бұрын
Imagine using an electron based debugger frontend in 2023! Thank you for this, this is a master class of "how to approach a problem solution" IRL.
@simonfarre4907
@simonfarre4907 8 ай бұрын
I certainly do. It means my IDE _and_ debugger uses the same interface. The seamlessness is amazing. I use RR, GDB seamlessly together in vs code with the Midas extension. It means all my bookmarking, all my navigation of the code works identically. It makes the process of development exponentially a lot faster than having to manage multiple UI:s for what essentially amounts to the same work flow.
@CoderDBF
@CoderDBF 9 ай бұрын
You’re like a 40x developer, I couldn’t do in a week what you do in an hour.
@TsodingDaily
@TsodingDaily 9 ай бұрын
Tbh, I got really lucky today. It's def not always like that. :D
@khuntasaurus88
@khuntasaurus88 7 ай бұрын
Sounds like you're just a 0.2x developer. Skill issue
@ShpirtMan
@ShpirtMan 9 ай бұрын
Cool video. As soon as I saw the L in "5L", I knew it's going to be py2 vs py3 issue.
@Sloimay
@Sloimay 9 ай бұрын
did i just get spoiled in a "debugging the debugger" video
@apenaswellignton
@apenaswellignton 9 ай бұрын
and who's debugging the debugger that is debugging the debugger!?!
@nickdance965
@nickdance965 9 ай бұрын
excited to watch this one! thank you for all the interesting videos and content!
@isaacdiaby
@isaacdiaby 9 ай бұрын
45:30 The celebration dance made it all worth watching 😂🎉
@prodbyfaith
@prodbyfaith 9 ай бұрын
"Look how quickly it recomputes its layout, can your Electron do that?" Lmao instant sub
@bashbin
@bashbin 9 ай бұрын
That was great! It's been 2 years of watching you, and I have learned so much from you.
@Gordonfreems
@Gordonfreems 9 ай бұрын
This is such an awesome find, nice video!
@tomaspecl1082
@tomaspecl1082 9 ай бұрын
Who debugs the debugger? The hexdump of memory content and a "real programmer" who speaks machine code fluently.
@MrChester114
@MrChester114 9 ай бұрын
This is honestly a great unintentional tutorial on how to contribute to open source
@realGBx64
@realGBx64 9 ай бұрын
13:40 “so maybe it won’t be that deep and that dirty” - me looking at the timer, showing the video is 59:53 long: “it will be deep and dirty”
@theherk
@theherk 9 ай бұрын
That was a really nice session. Thanks for the video.
@lamprospitsillou6325
@lamprospitsillou6325 9 ай бұрын
Would love more of fixing-contibuting to OSS ! ❤️
@andrewkosenko2757
@andrewkosenko2757 9 ай бұрын
I like your statusbar, especially the part that shows the folder size 😂😂
@HarperLee1840
@HarperLee1840 9 ай бұрын
That's quite a journey. Great video and thank you for the pull request.
@rasulseidagul
@rasulseidagul 9 ай бұрын
This was insanely entertaining to watch 😂 lmao Thanks for sharing the vid
@kir4agi
@kir4agi 9 ай бұрын
Loved this one mate, keep it up :)
@artemiasalina1860
@artemiasalina1860 29 күн бұрын
With all of the recursive meta-debugging going on it's best practice to make sure you're seated and hold onto something when watching a Tsoding video. I'm still dizzy from watching him develop his Dramatic EDitor in his Dramatic EDitor! It's a good thing he didn't need to debug his debugger while editing his editor in his editor!
@diverso3611
@diverso3611 9 ай бұрын
this was very impressive. great job
@PwnySlaystation01
@PwnySlaystation01 3 ай бұрын
This was a fascinating video. Really good
@adibozzhanov3101
@adibozzhanov3101 9 ай бұрын
I just spent a whole day staring at SQL queries stored as string literals in a python codebase and seeing the exact same thing happen in a C code base with python as string literals just kind of boiled my brain. Loved every second of this video, thank you for doing that.
@cheebadigga4092
@cheebadigga4092 9 ай бұрын
This was fantastic! Also, very smart fix.
@ariftunahandeniz6078
@ariftunahandeniz6078 9 ай бұрын
It's like watching Bob Ross. Awesome video!
@kaksisve4012
@kaksisve4012 9 ай бұрын
They: Do you have a gf? 👩‍❤️‍👨 Me:
@akkudakkupl
@akkudakkupl 9 ай бұрын
This was a thing of beauty.
@exvimmer
@exvimmer 9 ай бұрын
This was a really cool video. Thanks
@michalbotor
@michalbotor 9 ай бұрын
you deserve a medal you're too nice
@monsieuralexandergulbu3678
@monsieuralexandergulbu3678 9 ай бұрын
It's nice to be able to just edit your video in two hours
@wijiler5834
@wijiler5834 9 ай бұрын
Epic zozin zession
@astral6749
@astral6749 8 ай бұрын
This question has the same vibes as "what compiles the compiler"
@JakobKenda
@JakobKenda 22 күн бұрын
and that's why you ship your dependencies alongside your program, boys
@salim444
@salim444 9 ай бұрын
It was really nice seeing how to contribute like a REAL PROGRAMERS. thanks tsoding
@sitryk3362
@sitryk3362 9 ай бұрын
I get so burnt out with programming these days but I really enjoy watching your programming Tsoding : - )
@jordanmcconnon6214
@jordanmcconnon6214 9 ай бұрын
Thanks for showcasing gf
@SimGunther
@SimGunther 9 ай бұрын
2:52 Debugging the debugger running buggy GUI programs LOL
@teslax9243
@teslax9243 9 ай бұрын
Wonderful video.
@leonardoquiroga6850
@leonardoquiroga6850 9 ай бұрын
great video!
@Stroopwafe1
@Stroopwafe1 9 ай бұрын
I honestly thought ddd was the only graphical frontend for gdb, thanks for showing me gf2, it actually has a nice UI
@ZoraAlven
@ZoraAlven 9 ай бұрын
this one kinda epic in all means IT in its pure natural form
@MyWatermelonz
@MyWatermelonz 9 ай бұрын
Damn i subscribed but i never have time to really sit down and watch your videos due to the length. Im sure the content is good from what I've gauged from.the comments
@Ubervisor_
@Ubervisor_ 9 ай бұрын
zozin asking the real questions here
@blackhaze3856
@blackhaze3856 9 ай бұрын
This video is programming porn. Top level wisdom.
@fluffyribbit1881
@fluffyribbit1881 9 ай бұрын
Have you ever gone through TAOCP? One of the curious things about it is that it tries to teach programming using a bespoke assembly language. Why do this? Because, once you get to the (unwritten) end, you could write a compiler *without* a compile, as the Grace Hopper had to do when she wrote COBOL.
@mypegionworld7612
@mypegionworld7612 9 ай бұрын
I wanna reach this level of mastery.. You are the best 🎉.
@postmodernist1848
@postmodernist1848 9 ай бұрын
He really debugged the debugger
@mondevictor
@mondevictor 9 ай бұрын
Insane video
@KunalDawn
@KunalDawn 9 ай бұрын
look at this MF*, why the f* it even do that - you made my day there
@DFPercush
@DFPercush 9 ай бұрын
lol, and there's your moment. Actually I think it's because in Python 2, print is a keyword, not a function. So the parentheses that would normally indicate a function call are instead interpreted as a tuple, because it contains comma separated values. Changing it to a single string value just makes the outer parentheses redundant, but that also makes it compatible with both versions.
@criticalpoint2779
@criticalpoint2779 Ай бұрын
Debugging a buged debugger with a buged debugger souds like governments in action
@user-kp6ir4ih9s
@user-kp6ir4ih9s 9 ай бұрын
You are so cool, man
@nebulus3919
@nebulus3919 9 ай бұрын
I'm learning how to code a complier by Porth, but I have a question, why all the tutorials on this topic start doing an algebra compiler, and then start doing the things like functions, variables...? Btw I love your videos! Would be amazing if in a future you do some compiler relationed content.
@DFPercush
@DFPercush 9 ай бұрын
Maybe it's just because parsing algebraic expressions with the proper order of operations is a natural part of generating an abstract syntax tree. Usually, function calls and control flow take lower precedence than algebraic expressions, so you can just take your expression parser and add those things on the end. Of course you can also use a parser generator like Lex and Yacc to describe your language using pattern matching, kind of like regular expressions.
@kyuantym
@kyuantym 9 ай бұрын
Upon reading the title, I just thought about this.
@mbarrio
@mbarrio 9 ай бұрын
Success!
@vuongnh0607l
@vuongnh0607l 9 ай бұрын
So for anyone who never programmed in Python 2 like me, print in Python 2 is not a builtin function but a statement, the code is intepreted as printing a tuple ('(array) ', 5) But there's no such thing as a single element tuple, so printing a single string ('(array) 5') doesn't show the *parentheses
@odomobo
@odomobo 9 ай бұрын
There is a single-element tuple, but its syntax looks like: (5,)
@vuongnh0607l
@vuongnh0607l 9 ай бұрын
@@odomobo thanks for correcting me, I'm still learning Python Out of curiosity, what's the use case for single element tuple?
@odomobo
@odomobo 9 ай бұрын
@@vuongnh0607l I don't think there are many use cases, as I think it's mostly there for consistency's sake (so you can create any length of tuple). I don't write a lot of python, so I've never run into a situation where I needed to use it, I just thought it was interesting that it does exist
@Czeckie
@Czeckie 9 ай бұрын
ok this was epic
@an0nsaiko890
@an0nsaiko890 9 ай бұрын
Next Episode... "Wait, who compiles the compiler ?!"
@AlguienMas555
@AlguienMas555 9 ай бұрын
Jajaja. The moment of the true was great
@potatopassingby1148
@potatopassingby1148 9 ай бұрын
alternative title: FIXING A DEBUGGER WITH ONLY PYTHON?!
@tapion1998
@tapion1998 7 ай бұрын
These random german expressions are gold! Are you from germany or have you just caught up some words?
@inferior2884
@inferior2884 9 ай бұрын
This is why you use standard containers instead of rolling your own
@apenaswellignton
@apenaswellignton 9 ай бұрын
ikr? this has to be one of the w̶o̶r̶s̶t̶ most curseds C++ codebase ive ever seen. i bet this was written by people who thinks C++ is C with classes, i mean, you can clearly see it, they even manage the memory themselves by hand. imagine doing that in 2023.
@djscratchcat474
@djscratchcat474 9 ай бұрын
@@apenaswelligntonwhat do you suggest?
@TsodingDaily
@TsodingDaily 9 ай бұрын
you meant the best C++ codebase
@apenaswellignton
@apenaswellignton 9 ай бұрын
@@djscratchcat474simply use what the standard already offers to you. theres barely any reason to come up with generic containers from scratch, and if you do try to come up with one theres a big chance you will get it wrong
@apenaswellignton
@apenaswellignton 9 ай бұрын
@@TsodingDailyKappa
@b4mbus60
@b4mbus60 9 ай бұрын
what is the app used for zooming in and out?
@ian3084
@ian3084 8 ай бұрын
C++ operators, such a great idea ... I might take up Zig just for not allowing that
@SingleTheShot
@SingleTheShot 9 ай бұрын
I think part of the issue is your GDB is using python 2, but their gf2 expects python 3 cuz in python 2 the print statements dont need (), so theyre treated as a tuple and my gdb (from doing `py import sys; print(sys.version);`) prints python 3.10 and also doesnt have the tuple bug
@SingleTheShot
@SingleTheShot 9 ай бұрын
lol 3 seconds later you figured this python2 vs python3 bug out lmfao
@revenevan11
@revenevan11 Ай бұрын
It's recursive debuggers all the way down!!!🤯🤣
@stevenriofrio7963
@stevenriofrio7963 9 ай бұрын
Could you recommend a computer graphics book where they teach the mathematics of 3D rendering, I still don't understand how to obtain the projection matrix?
@prasannas3219
@prasannas3219 9 ай бұрын
Hi Tsoding developed a 3D graphics library from scratch, where he goes over the mathematics behind rendering objects in 3D. kzfaq.info/sun/PLpM-Dvs8t0Va-Gb0Dp4d9t8yvNFHaKH6N Maybe some of the episodes in there relating to 3D will be useful for you.
@veritas7010
@veritas7010 9 ай бұрын
I mean so much can you expect from 155 commits repo
@eazypeazy8559
@eazypeazy8559 9 ай бұрын
FUCKING GREAT
@rodelias9378
@rodelias9378 9 ай бұрын
Great stream!! (And it is not a Rust one)
@motyakskellington7723
@motyakskellington7723 9 ай бұрын
who's compiling the compiler
@ALG397
@ALG397 9 ай бұрын
Hello, why you don't explain the Encrypt Algorithme and How BruteForce works
@johanngambolputty5351
@johanngambolputty5351 9 ай бұрын
I'm guessing print(*args) in python 3 is variadic, so it just runs __repr__ on each of the things in its args (appends the individual string representations), which drops the quotes for the string. While in python 2 it just prints the string representation of the args tuple, which prints the outer brackets and keeps the string wrapped in quotes.
@odomobo
@odomobo 9 ай бұрын
In python 2, print was a builtin keyword, and in python 3 it became a function. Since it's a keyword in python2, you don't use parens when calling it. However, if you use parens anyhow, the expression on the right becomes a tuple, and the tuple is printed.
@replikvltyoutube3727
@replikvltyoutube3727 9 ай бұрын
The nest is a lot
@bashbarash1148
@bashbarash1148 9 ай бұрын
What was that? I just watched Inception 2, but with art house flavor and budget.
@flamendless
@flamendless 9 ай бұрын
That feeling finding out it's the python that caused it 😂
@filippanek9484
@filippanek9484 9 ай бұрын
Nice session Mr. Tsoding, but where github…
@cedric1731
@cedric1731 9 ай бұрын
What caught me off guard was that you were using scheisse so often. Do you use this word in Russian, too?! As far as I knew it is German (written scheiße...).
@wellhiiguess2351
@wellhiiguess2351 9 ай бұрын
Amazing video just one quest why does it say porn folder in the bottom right
@VinayKumar-vu3en
@VinayKumar-vu3en 9 ай бұрын
Tsoding the type of guy who would debug the debugger (i'd have just moved on to another one).
@mouradaouinat8721
@mouradaouinat8721 9 ай бұрын
so nobody is going to talk about the 7.5 gig porn folder?
@nickdance965
@nickdance965 9 ай бұрын
there's a funni @ 28:41
@sonuaryan5287
@sonuaryan5287 9 ай бұрын
A similar question comes to mind but every programmer knows I think including me. Who is compiling other compilers if we go whether no software exists? A funny question but it's important.
@andrejsk6211
@andrejsk6211 9 ай бұрын
You start with writing machine code by hand to create an assembler to assemble a compiler to compile a better compiler :) It's the compilation centipede.
@sonuaryan5287
@sonuaryan5287 9 ай бұрын
@@andrejsk6211 ya
@chriscoyc
@chriscoyc 9 ай бұрын
if is that so, who makes the clown laugh? 😔
@romandobra3151
@romandobra3151 9 ай бұрын
Really krasava
@XDjUanZInHO
@XDjUanZInHO 9 ай бұрын
You should also try using seer, or the classic ddd
@valbogda5512
@valbogda5512 2 ай бұрын
Thanks. Watching this video I was trying to remember what was the name of the graphical frontend I used to use lotta years ago. I never realised it was GNU's own frontend. Gotta love the aesthetics of Motif :).
@adityagaikwad1467
@adityagaikwad1467 9 ай бұрын
moral of the story, write backwards compatible oython code, cant just go on ditching python 2 lol
@anon-fz2bo
@anon-fz2bo 9 ай бұрын
billion iq question
@michalbotor
@michalbotor 9 ай бұрын
debugging is hell
@malusmundus-9605
@malusmundus-9605 9 ай бұрын
This is why I just use gdb from the command line... you add all that extra complexity for the gui and you get bugs... and then you waste time.
@hedlund
@hedlund 9 ай бұрын
You're seriously calling an explicitly recreational programming session a waste of time...? Recreational programming that also happens to improve upon a piece of OSS. A piece of OSS he actually likes, at that. Are you just e-peening? Are you simply a bit of a twat? What am I missing?
@rootsudosu
@rootsudosu 9 ай бұрын
29:30 XD XD
@user-mj1wg5oz2b
@user-mj1wg5oz2b 9 ай бұрын
for everyone that just want to see the highlight; 45:31
@alurma
@alurma 9 ай бұрын
10:25 is that true? Does C spec guaeantee that &arr[0] is a noop? I'm not convinced I think it is deferenced (using «as if rule» of course) either way. &arr[0] => &(arr[0]) => &(*(arr + 0)) => &*arr. Square brackets have higher precedence, so it's not (&arr)[0] which would be a noop in C indeed
@DFPercush
@DFPercush 9 ай бұрын
&arr[0] is most likely a LEA instruction on x86. It doesn't try to access the memory of the array, just computes the address of the 0th element. During the compilation process, in an abstract sense, arr[0] is an l-value on its own, which you then take the address of. But the expression as a whole only has to produce an address, not the value at that address, so there's no reason to MOV anything there or use that memory as an operand, unless you do exactly that.
@alurma
@alurma 9 ай бұрын
@@DFPercush truly. But this seems not portable 😄
@DFPercush
@DFPercush 9 ай бұрын
@@alurma Try it on godbolt on an arm or mips cpu. The operator overload is the only reason it would access the array. But if you want to be safe, you can also just pass the array variable itself, which will decay to a pointer in C. In C++ it will also decay to a pointer, unless you're calling a template function that expects a reference to an array of size , but in that case the size will be known and one would hope it wouldn't try to dereference out of bounds elements. Sorry if I'm making it too complicated. Fun fact: in VB6 if you wanted to call a C library (including DirectX) and pass it an array, you had to pass array[0] because it passed everything by reference, so array[0] is how you got the address of the beginning of the array. That was the only way to do it. I'm not sure I ever tried to pass an empty array though.
@alurma
@alurma 9 ай бұрын
@@DFPercush yea, the usual "passing array so it decays to a pointer" seems simpler :) Interesting comment on VB6 :)
Can C actually do Perfect Bézier Curves?
2:17:22
Tsoding Daily
Рет қаралды 6 М.
Async Engine in C
3:12:16
Tsoding Daily
Рет қаралды 31 М.
Surprise Gifts #couplegoals
00:21
Jay & Sharon
Рет қаралды 31 МЛН
Мама забыла взять трубочку для колы
00:25
Даша Боровик
Рет қаралды 2,2 МЛН
小路飞姐姐居然让路飞小路飞都消失了#海贼王  #路飞
00:47
路飞与唐舞桐
Рет қаралды 69 МЛН
Why Open Source and Give Software Away?
16:10
Chris Titus Tech
Рет қаралды 28 М.
Reverse Engineering Data Files
1:59:16
Tsoding Daily
Рет қаралды 37 М.
Is John Carmack Right about UI?!
1:52:02
Tsoding Daily
Рет қаралды 29 М.
Coding Adventure: Rendering Text
1:10:54
Sebastian Lague
Рет қаралды 533 М.
Ok I tried Tree-sitter! Here is what I think about it...
1:56:47
Tsoding Daily
Рет қаралды 48 М.
Run and Debug TypeScript Unit Tests in Neovim
9:01
Elijah Manor
Рет қаралды 17 М.
Content Aware Scaling in C
2:36:04
Tsoding Daily
Рет қаралды 26 М.
Is C++ better than C?
1:46:10
Tsoding Daily
Рет қаралды 27 М.
You don't need Generics in C
1:37:38
Tsoding Daily
Рет қаралды 55 М.
Вы поможете украсть ваш iPhone
0:56
Romancev768
Рет қаралды 595 М.
How about that uh?😎 #sneakers #airpods
0:13
Side Sphere
Рет қаралды 9 МЛН