Wait, but Who's Debugging the Debugger?!

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2024

Комментарии • 186

  • @nakst6528
    @nakst6528 Год назад +226

    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  Год назад +60

      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 Год назад +228

    Imagine to debug a C application via C debugger via C debugger to find that problem was in Python

    • @monad_tcp
      @monad_tcp Год назад +1

      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 11 месяцев назад

      @@monad_tcpmove to a rolling release distro or a distro based on fedora. You’ll thank me later :P

    • @pookiepats
      @pookiepats 7 месяцев назад +1

      @@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

    • @mariuszdziem8203
      @mariuszdziem8203 6 месяцев назад

      @@pookiepats I hate Python too. I have been taught Pascal, C, C++, and all those languages are kinda the same. But Python is so bad with tabs instead of simply using curly brackets {,}. Readability would be skyrocketing.

    • @pookiepats
      @pookiepats 6 месяцев назад

      @@mariuszdziem8203 ashamed to say but when I was only a young ignorant data analyst I would swear by Python’s indentation approach because the vast majority of my work was done in relatively small instances of Jupyter Notebooks.
      But you’re 100% correct-as soon as I graduated into writing actual programs the indentation became a hindrance and source of major frustration.
      TL;DR i write Swift everywhere i used to write Python and my blood pressure is down 30 points

  • @bacon-SG
    @bacon-SG Год назад +106

    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 Год назад +42

    47:20 "we fixed the debugger, now lets fix my application" XD XD

  • @aarovprasad391
    @aarovprasad391 Год назад +124

    This is like watching an artist at work

    •  Год назад +6

      Well you are watching an actual artist.

  • @万宇阳
    @万宇阳 Год назад +138

    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 Год назад +35

      Who comments on comments?

    • @CertifiedDynamite
      @CertifiedDynamite Год назад +43

      As per the LFS installation manual: "To compile a compiler, you will need a compiler."

    • @ace5331
      @ace5331 Год назад +16

      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 Год назад +19

      ​@@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 Год назад +4

      _tsocrates_

  • @aciddev_
    @aciddev_ Год назад +15

    tsodin:
    fix bug in debuger: easy
    write comment message: *imposible.*

  • @ynchen
    @ynchen Год назад +23

    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...

  • @ShpirtMan
    @ShpirtMan Год назад +17

    Cool video. As soon as I saw the L in "5L", I knew it's going to be py2 vs py3 issue.

    • @Sloimay
      @Sloimay Год назад +11

      did i just get spoiled in a "debugging the debugger" video

  • @ThatManFromGermany
    @ThatManFromGermany Год назад +17

    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 Год назад +3

      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.

  • @nickdance965
    @nickdance965 Год назад +5

    excited to watch this one! thank you for all the interesting videos and content!

  • @bashbin
    @bashbin Год назад +2

    That was great! It's been 2 years of watching you, and I have learned so much from you.

  • @TEHNOTRAHER
    @TEHNOTRAHER Год назад +16

    me: mom can i go to cinema to watch "Inception"
    mom: we have "Inception" at home
    "Inception" at home 7:20

    • @thakeenathees2342
      @thakeenathees2342 Год назад

      I was just typing this coment and saw this

    • @nyyakko
      @nyyakko Год назад

      it made my brain go smooth

  • @lamprospitsillou6325
    @lamprospitsillou6325 Год назад +9

    Would love more of fixing-contibuting to OSS ! ❤️

  • @isaacdiaby
    @isaacdiaby Год назад +2

    45:30 The celebration dance made it all worth watching 😂🎉

  • @andrewkosenko2757
    @andrewkosenko2757 Год назад +1

    I like your statusbar, especially the part that shows the folder size 😂😂

  • @realGBx64
    @realGBx64 Год назад +2

    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”

  • @Gordonfreems
    @Gordonfreems Год назад +1

    This is such an awesome find, nice video!

  • @adibozzhanov3101
    @adibozzhanov3101 Год назад +7

    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.

  • @prodbyfaith
    @prodbyfaith Год назад +1

    "Look how quickly it recomputes its layout, can your Electron do that?" Lmao instant sub

  • @CoderDBF
    @CoderDBF Год назад +34

    You’re like a 40x developer, I couldn’t do in a week what you do in an hour.

    • @TsodingDaily
      @TsodingDaily  Год назад +26

      Tbh, I got really lucky today. It's def not always like that. :D

    • @khuntasaurus88
      @khuntasaurus88 Год назад

      Sounds like you're just a 0.2x developer. Skill issue

  • @nyyakko
    @nyyakko Год назад +5

    and who's debugging the debugger that is debugging the debugger!?!

    • @teknixstuff
      @teknixstuff 5 месяцев назад +1

      You can't debug a human.

  • @HarperLee1840
    @HarperLee1840 Год назад

    That's quite a journey. Great video and thank you for the pull request.

  • @MrChester114
    @MrChester114 Год назад +3

    This is honestly a great unintentional tutorial on how to contribute to open source

  • @PwnySlaystation01
    @PwnySlaystation01 10 месяцев назад

    This was a fascinating video. Really good

  • @artemiasalina1860
    @artemiasalina1860 7 месяцев назад

    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!

  • @ariftunahandeniz6078
    @ariftunahandeniz6078 Год назад +2

    It's like watching Bob Ross. Awesome video!

  • @tomaspecl1082
    @tomaspecl1082 Год назад +9

    Who debugs the debugger? The hexdump of memory content and a "real programmer" who speaks machine code fluently.

  • @sitryk3362
    @sitryk3362 Год назад +2

    I get so burnt out with programming these days but I really enjoy watching your programming Tsoding : - )

  • @fluffyribbit1881
    @fluffyribbit1881 Год назад +3

    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.

  • @theherk
    @theherk Год назад

    That was a really nice session. Thanks for the video.

  • @salim444
    @salim444 Год назад +4

    It was really nice seeing how to contribute like a REAL PROGRAMERS. thanks tsoding

  • @rasulseidagul
    @rasulseidagul Год назад

    This was insanely entertaining to watch 😂 lmao
    Thanks for sharing the vid

  • @cheebadigga4092
    @cheebadigga4092 Год назад

    This was fantastic! Also, very smart fix.

  • @SimGunther
    @SimGunther Год назад +3

    2:52 Debugging the debugger running buggy GUI programs LOL

  • @ian3084
    @ian3084 Год назад

    C++ operators, such a great idea ... I might take up Zig just for not allowing that

  • @luigidabro
    @luigidabro 5 месяцев назад

    A GDB debugger with compiled with a clang++ compiler.

  • @Stroopwafe1
    @Stroopwafe1 Год назад +1

    I honestly thought ddd was the only graphical frontend for gdb, thanks for showing me gf2, it actually has a nice UI

  • @astral6749
    @astral6749 Год назад +1

    This question has the same vibes as "what compiles the compiler"

  • @exvimmer
    @exvimmer Год назад

    This was a really cool video. Thanks

  • @diverso3611
    @diverso3611 Год назад

    this was very impressive. great job

  • @DelgardAlven
    @DelgardAlven Год назад +1

    this one kinda epic in all means
    IT in its pure natural form

  • @mariuszdziem8203
    @mariuszdziem8203 6 месяцев назад

    You're my hero! :) So interesting episode.
    You deserve P70,/P71/P72 thinkpad with Xeon processor with 64/128GB of ram.

  • @KunalDawn
    @KunalDawn Год назад +1

    look at this MF*, why the f* it even do that - you made my day there

    • @DFPercush
      @DFPercush Год назад +1

      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.

  • @JakobKenda
    @JakobKenda 7 месяцев назад

    and that's why you ship your dependencies alongside your program, boys

  • @akkudakkupl
    @akkudakkupl Год назад +1

    This was a thing of beauty.

  • @kaksisve4012
    @kaksisve4012 Год назад +4

    They: Do you have a gf? 👩‍❤️‍👨
    Me:

  • @vuongnh0607l
    @vuongnh0607l Год назад +1

    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 Год назад +1

      There is a single-element tuple, but its syntax looks like: (5,)

    • @vuongnh0607l
      @vuongnh0607l Год назад +1

      @@odomobo thanks for correcting me, I'm still learning Python
      Out of curiosity, what's the use case for single element tuple?

    • @odomobo
      @odomobo Год назад

      @@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

  • @kir4agi
    @kir4agi Год назад

    Loved this one mate, keep it up :)

  • @wijiler5834
    @wijiler5834 Год назад +7

    Epic zozin zession

  • @potatopassingby
    @potatopassingby Год назад

    alternative title:
    FIXING A DEBUGGER WITH ONLY PYTHON?!

  • @jordanmcconnon6214
    @jordanmcconnon6214 Год назад +1

    Thanks for showcasing gf

  • @johanngambolputty5351
    @johanngambolputty5351 Год назад +3

    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 Год назад +5

      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.

  • @SingleTheShot
    @SingleTheShot Год назад +2

    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 Год назад +1

      lol 3 seconds later you figured this python2 vs python3 bug out lmfao

  • @kyuantym
    @kyuantym Год назад

    Upon reading the title, I just thought about this.

  • @teslax9243
    @teslax9243 Год назад

    Wonderful video.

  • @AlguienMas555
    @AlguienMas555 Год назад +1

    Jajaja. The moment of the true was great

  • @veritas7010
    @veritas7010 Год назад

    I mean so much can you expect from 155 commits repo

  • @revenevan11
    @revenevan11 7 месяцев назад

    It's recursive debuggers all the way down!!!🤯🤣

  • @VinayKumar-vu3en
    @VinayKumar-vu3en Год назад

    Tsoding the type of guy who would debug the debugger (i'd have just moved on to another one).

  • @MyWatermelonz
    @MyWatermelonz Год назад

    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

  • @monsieuralexandergulbu3678
    @monsieuralexandergulbu3678 Год назад

    It's nice to be able to just edit your video in two hours

  • @michalbotor
    @michalbotor Год назад +1

    you deserve a medal
    you're too nice

  • @stevenriofrio7963
    @stevenriofrio7963 Год назад +1

    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 Год назад

      Hi
      Tsoding developed a 3D graphics library from scratch, where he goes over the mathematics behind rendering objects in 3D.
      ruclips.net/p/PLpM-Dvs8t0Va-Gb0Dp4d9t8yvNFHaKH6N
      Maybe some of the episodes in there relating to 3D will be useful for you.

  • @an0nsaiko890
    @an0nsaiko890 Год назад

    Next Episode... "Wait, who compiles the compiler ?!"

  • @user-mj1wg5oz2b
    @user-mj1wg5oz2b Год назад +2

    for everyone that just want to see the highlight; 45:31

  • @inferior2884
    @inferior2884 Год назад +3

    This is why you use standard containers instead of rolling your own

    • @nyyakko
      @nyyakko Год назад

      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.

    • @Alsexaren
      @Alsexaren Год назад

      @@nyyakkowhat do you suggest?

    • @TsodingDaily
      @TsodingDaily  Год назад +3

      you meant the best C++ codebase

    • @nyyakko
      @nyyakko Год назад +1

      @@Alsexarensimply 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

    • @nyyakko
      @nyyakko Год назад

      @@TsodingDailyKappa

  • @mypegionworld7612
    @mypegionworld7612 Год назад

    I wanna reach this level of mastery.. You are the best 🎉.

  • @nickdance965
    @nickdance965 Год назад +2

    there's a funni @ 28:41

  • @postmodernist1848
    @postmodernist1848 Год назад +1

    He really debugged the debugger

  • @blackhaze3856
    @blackhaze3856 Год назад +1

    This video is programming porn. Top level wisdom.

  • @Ubervisor_
    @Ubervisor_ Год назад

    zozin asking the real questions here

  • @0xbinarylol
    @0xbinarylol Год назад +1

    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 Год назад +2

      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.

    • @0xbinarylol
      @0xbinarylol Год назад

      @@andrejsk6211 ya

  • @nebulus3919
    @nebulus3919 Год назад +1

    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 Год назад +6

      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.

  • @criticalpoint2779
    @criticalpoint2779 7 месяцев назад

    Debugging a buged debugger with a buged debugger souds like governments in action

  • @malusmundus-9605
    @malusmundus-9605 Год назад

    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 Год назад

      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?

  • @bashbarash1148
    @bashbarash1148 Год назад

    What was that? I just watched Inception 2, but with art house flavor and budget.

  • @replikvltyoutube3727
    @replikvltyoutube3727 Год назад

    The nest is a lot

  • @rodelias9378
    @rodelias9378 Год назад

    Great stream!! (And it is not a Rust one)

  • @motyakskellington7723
    @motyakskellington7723 Год назад

    who's compiling the compiler

  • @mbarrio
    @mbarrio Год назад

    Success!

  • @noctavel
    @noctavel Год назад

    this is goldpearl
    btw, python is the worst languange. You can lose so much time with a dynamic language with strong typing

  • @mondevictor
    @mondevictor Год назад

    Insane video

  • @LeoHQx
    @LeoHQx Год назад

    great video!

  • @Czeckie
    @Czeckie Год назад

    ok this was epic

  • @ErikBongers
    @ErikBongers 9 месяцев назад

    Either this is a great example of why overloaded operators are bad - they hide effects and they may not do what you expect them to do.
    Or it's a great example of why you shouldn't pass the address of the first value of an array as the beginning of the array, in C++.

    • @TsodingDaily
      @TsodingDaily  9 месяцев назад

      Yeah, there is definitely a lesson somewhere there, but we don't know exactly what it is.

  • @b4mbus60
    @b4mbus60 Год назад +1

    what is the app used for zooming in and out?

  • @XDjUanZInHO
    @XDjUanZInHO Год назад

    You should also try using seer, or the classic ddd

    • @valbogda5512
      @valbogda5512 9 месяцев назад

      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 :).

  • @ЯрославСвиридов-в7б

    You are so cool, man

  • @ALG397
    @ALG397 Год назад

    Hello,
    why you don't explain the Encrypt Algorithme and How BruteForce works

  • @alurma
    @alurma Год назад

    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 Год назад +1

      &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 Год назад

      @@DFPercush truly. But this seems not portable 😄

    • @DFPercush
      @DFPercush Год назад +1

      @@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 Год назад

      @@DFPercush yea, the usual "passing array so it decays to a pointer" seems simpler :) Interesting comment on VB6 :)

  • @eazypeazy8559
    @eazypeazy8559 Год назад

    FUCKING GREAT

  • @hoxorious
    @hoxorious Год назад +1

    The root cause at 41:28

  • @rootsudosu
    @rootsudosu Год назад +1

    45:34 first try MF XD

  • @wellhiiguess2351
    @wellhiiguess2351 Год назад

    Amazing video just one quest why does it say porn folder in the bottom right

  • @tapion1998
    @tapion1998 Год назад

    These random german expressions are gold! Are you from germany or have you just caught up some words?

  • @flamendless
    @flamendless Год назад

    That feeling finding out it's the python that caused it 😂

  • @romandobra3151
    @romandobra3151 Год назад

    Really krasava

  • @chriscoyc
    @chriscoyc Год назад

    if is that so, who makes the clown laugh? 😔

  • @filippanek9484
    @filippanek9484 Год назад

    Nice session Mr. Tsoding, but where github…