- Music: / @nu11_ft - The GDB frontend for Linux: github.com/nakst/gf
Пікірлер: 179
@nakst65289 ай бұрын
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 :)
@TsodingDaily9 ай бұрын
Thank you so much! I definitely need to spend some time reading the README. There are so many things I'm missing. :D
@bashbarash11489 ай бұрын
Imagine to debug a C application via C debugger via C debugger to find that problem was in Python
@monad_tcp5 ай бұрын
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 .
@lorenzocalza99604 ай бұрын
@@monad_tcpmove to a rolling release distro or a distro based on fedora. You’ll thank me later :P
@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
@aarovprasad3919 ай бұрын
This is like watching an artist at work
9 ай бұрын
Well you are watching an actual artist.
@bacon-SG9 ай бұрын
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"
@rootsudosu9 ай бұрын
47:20 "we fixed the debugger, now lets fix my application" XD XD
@user-bn4wn7ll3e9 ай бұрын
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?
@darukutsu9 ай бұрын
Who comments on comments?
@CertifiedDynamite9 ай бұрын
As per the LFS installation manual: "To compile a compiler, you will need a compiler."
@ace53319 ай бұрын
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 😄
@rj7250a9 ай бұрын
@@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.
@hetias9 ай бұрын
_tsocrates_
@TEHNOTRAHER9 ай бұрын
me: mom can i go to cinema to watch "Inception" mom: we have "Inception" at home "Inception" at home 7:20
@thakeenathees23429 ай бұрын
I was just typing this coment and saw this
@apenaswellignton9 ай бұрын
it made my brain go smooth
@aciddev_9 ай бұрын
tsodin: fix bug in debuger: easy write comment message: *imposible.*
@ynchen9 ай бұрын
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...
@ThatManFromGermany9 ай бұрын
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.
@simonfarre49078 ай бұрын
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.
@CoderDBF9 ай бұрын
You’re like a 40x developer, I couldn’t do in a week what you do in an hour.
@TsodingDaily9 ай бұрын
Tbh, I got really lucky today. It's def not always like that. :D
@khuntasaurus887 ай бұрын
Sounds like you're just a 0.2x developer. Skill issue
@ShpirtMan9 ай бұрын
Cool video. As soon as I saw the L in "5L", I knew it's going to be py2 vs py3 issue.
@Sloimay9 ай бұрын
did i just get spoiled in a "debugging the debugger" video
@apenaswellignton9 ай бұрын
and who's debugging the debugger that is debugging the debugger!?!
@nickdance9659 ай бұрын
excited to watch this one! thank you for all the interesting videos and content!
@isaacdiaby9 ай бұрын
45:30 The celebration dance made it all worth watching 😂🎉
@prodbyfaith9 ай бұрын
"Look how quickly it recomputes its layout, can your Electron do that?" Lmao instant sub
@bashbin9 ай бұрын
That was great! It's been 2 years of watching you, and I have learned so much from you.
@Gordonfreems9 ай бұрын
This is such an awesome find, nice video!
@tomaspecl10829 ай бұрын
Who debugs the debugger? The hexdump of memory content and a "real programmer" who speaks machine code fluently.
@MrChester1149 ай бұрын
This is honestly a great unintentional tutorial on how to contribute to open source
@realGBx649 ай бұрын
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”
@theherk9 ай бұрын
That was a really nice session. Thanks for the video.
@lamprospitsillou63259 ай бұрын
Would love more of fixing-contibuting to OSS ! ❤️
@andrewkosenko27579 ай бұрын
I like your statusbar, especially the part that shows the folder size 😂😂
@HarperLee18409 ай бұрын
That's quite a journey. Great video and thank you for the pull request.
@rasulseidagul9 ай бұрын
This was insanely entertaining to watch 😂 lmao Thanks for sharing the vid
@kir4agi9 ай бұрын
Loved this one mate, keep it up :)
@artemiasalina186029 күн бұрын
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!
@diverso36119 ай бұрын
this was very impressive. great job
@PwnySlaystation013 ай бұрын
This was a fascinating video. Really good
@adibozzhanov31019 ай бұрын
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.
@cheebadigga40929 ай бұрын
This was fantastic! Also, very smart fix.
@ariftunahandeniz60789 ай бұрын
It's like watching Bob Ross. Awesome video!
@kaksisve40129 ай бұрын
They: Do you have a gf? 👩❤️👨 Me:
@akkudakkupl9 ай бұрын
This was a thing of beauty.
@exvimmer9 ай бұрын
This was a really cool video. Thanks
@michalbotor9 ай бұрын
you deserve a medal you're too nice
@monsieuralexandergulbu36789 ай бұрын
It's nice to be able to just edit your video in two hours
@wijiler58349 ай бұрын
Epic zozin zession
@astral67498 ай бұрын
This question has the same vibes as "what compiles the compiler"
@JakobKenda22 күн бұрын
and that's why you ship your dependencies alongside your program, boys
@salim4449 ай бұрын
It was really nice seeing how to contribute like a REAL PROGRAMERS. thanks tsoding
@sitryk33629 ай бұрын
I get so burnt out with programming these days but I really enjoy watching your programming Tsoding : - )
@jordanmcconnon62149 ай бұрын
Thanks for showcasing gf
@SimGunther9 ай бұрын
2:52 Debugging the debugger running buggy GUI programs LOL
@teslax92439 ай бұрын
Wonderful video.
@leonardoquiroga68509 ай бұрын
great video!
@Stroopwafe19 ай бұрын
I honestly thought ddd was the only graphical frontend for gdb, thanks for showing me gf2, it actually has a nice UI
@ZoraAlven9 ай бұрын
this one kinda epic in all means IT in its pure natural form
@MyWatermelonz9 ай бұрын
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_9 ай бұрын
zozin asking the real questions here
@blackhaze38569 ай бұрын
This video is programming porn. Top level wisdom.
@fluffyribbit18819 ай бұрын
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.
@mypegionworld76129 ай бұрын
I wanna reach this level of mastery.. You are the best 🎉.
@postmodernist18489 ай бұрын
He really debugged the debugger
@mondevictor9 ай бұрын
Insane video
@KunalDawn9 ай бұрын
look at this MF*, why the f* it even do that - you made my day there
@DFPercush9 ай бұрын
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Ай бұрын
Debugging a buged debugger with a buged debugger souds like governments in action
@user-kp6ir4ih9s9 ай бұрын
You are so cool, man
@nebulus39199 ай бұрын
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.
@DFPercush9 ай бұрын
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.
@kyuantym9 ай бұрын
Upon reading the title, I just thought about this.
@mbarrio9 ай бұрын
Success!
@vuongnh0607l9 ай бұрын
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
@odomobo9 ай бұрын
There is a single-element tuple, but its syntax looks like: (5,)
@vuongnh0607l9 ай бұрын
@@odomobo thanks for correcting me, I'm still learning Python Out of curiosity, what's the use case for single element tuple?
@odomobo9 ай бұрын
@@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
@Czeckie9 ай бұрын
ok this was epic
@an0nsaiko8909 ай бұрын
Next Episode... "Wait, who compiles the compiler ?!"
@AlguienMas5559 ай бұрын
Jajaja. The moment of the true was great
@potatopassingby11489 ай бұрын
alternative title: FIXING A DEBUGGER WITH ONLY PYTHON?!
@tapion19987 ай бұрын
These random german expressions are gold! Are you from germany or have you just caught up some words?
@inferior28849 ай бұрын
This is why you use standard containers instead of rolling your own
@apenaswellignton9 ай бұрын
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.
@djscratchcat4749 ай бұрын
@@apenaswelligntonwhat do you suggest?
@TsodingDaily9 ай бұрын
you meant the best C++ codebase
@apenaswellignton9 ай бұрын
@@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
@apenaswellignton9 ай бұрын
@@TsodingDailyKappa
@b4mbus609 ай бұрын
what is the app used for zooming in and out?
@ian30848 ай бұрын
C++ operators, such a great idea ... I might take up Zig just for not allowing that
@SingleTheShot9 ай бұрын
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
@SingleTheShot9 ай бұрын
lol 3 seconds later you figured this python2 vs python3 bug out lmfao
@revenevan11Ай бұрын
It's recursive debuggers all the way down!!!🤯🤣
@stevenriofrio79639 ай бұрын
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?
@prasannas32199 ай бұрын
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.
@veritas70109 ай бұрын
I mean so much can you expect from 155 commits repo
@eazypeazy85599 ай бұрын
FUCKING GREAT
@rodelias93789 ай бұрын
Great stream!! (And it is not a Rust one)
@motyakskellington77239 ай бұрын
who's compiling the compiler
@ALG3979 ай бұрын
Hello, why you don't explain the Encrypt Algorithme and How BruteForce works
@johanngambolputty53519 ай бұрын
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.
@odomobo9 ай бұрын
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.
@replikvltyoutube37279 ай бұрын
The nest is a lot
@bashbarash11489 ай бұрын
What was that? I just watched Inception 2, but with art house flavor and budget.
@flamendless9 ай бұрын
That feeling finding out it's the python that caused it 😂
@filippanek94849 ай бұрын
Nice session Mr. Tsoding, but where github…
@cedric17319 ай бұрын
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...).
@wellhiiguess23519 ай бұрын
Amazing video just one quest why does it say porn folder in the bottom right
@VinayKumar-vu3en9 ай бұрын
Tsoding the type of guy who would debug the debugger (i'd have just moved on to another one).
@mouradaouinat87219 ай бұрын
so nobody is going to talk about the 7.5 gig porn folder?
@nickdance9659 ай бұрын
there's a funni @ 28:41
@sonuaryan52879 ай бұрын
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.
@andrejsk62119 ай бұрын
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.
@sonuaryan52879 ай бұрын
@@andrejsk6211 ya
@chriscoyc9 ай бұрын
if is that so, who makes the clown laugh? 😔
@romandobra31519 ай бұрын
Really krasava
@XDjUanZInHO9 ай бұрын
You should also try using seer, or the classic ddd
@valbogda55122 ай бұрын
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 :).
@adityagaikwad14679 ай бұрын
moral of the story, write backwards compatible oython code, cant just go on ditching python 2 lol
@anon-fz2bo9 ай бұрын
billion iq question
@michalbotor9 ай бұрын
debugging is hell
@malusmundus-96059 ай бұрын
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.
@hedlund9 ай бұрын
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?
@rootsudosu9 ай бұрын
29:30 XD XD
@user-mj1wg5oz2b9 ай бұрын
for everyone that just want to see the highlight; 45:31
@alurma9 ай бұрын
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
@DFPercush9 ай бұрын
&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.
@alurma9 ай бұрын
@@DFPercush truly. But this seems not portable 😄
@DFPercush9 ай бұрын
@@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.
@alurma9 ай бұрын
@@DFPercush yea, the usual "passing array so it decays to a pointer" seems simpler :) Interesting comment on VB6 :)