I once saw a post on LinkedIn saying how terrible and unusable Linux was because it didn't have all the debugging tools that Windows has. I almost died laughing.
@pxolqopt35972 жыл бұрын
The author of that article definately tried to download applications from google
@ahmadhadwan3 жыл бұрын
i directly installed linux on my new laptop, it is just way better for programming, i don't have to use the windows api, i can install most of the libraries using my package manager, and i can use syscalls directly when writing in assembly
@jamess17873 жыл бұрын
Sounds like you found an old install provided by shippit. Good luck.
@ahmadhadwan3 жыл бұрын
@@jamess1787??
@daneemark42663 жыл бұрын
Linux is awesome but have some gaps. For instance when i want to use codeblocks for doing c/c++ stuff on my manjaro distro, the ui seems to be pretty broken
@nonnullptrhuman5043 жыл бұрын
@@daneemark4266 don't use manjaro, it's a piece of crap... If u want arch derivatives use endeavour os instead.
@Abu_Ubaida92 жыл бұрын
I think it's because of the theme depending on if you use qt or gtk, you can change the one that isn't the main in the settings too
@nourway36393 жыл бұрын
I switched to linux more than a year now from mac it is a bit challenging sometimes, but it’s totally worth it ! Especially if you are interested in low level and system programming
@ndugar85403 жыл бұрын
I’ve been using a Docker container to run both of these tools on Mac with relatively low effort. Valgrind and GDB both work perfectly under Docker, would recommend giving it a shot. Edit: albeit this is analogous to a VM, but from my experience, it’s oftentimes quicker and easier to setup than a full VM.
@monsterthrash3 жыл бұрын
3:00 How do you seamlessly switch from a macOS terminal to a VM terminal for compiling and testing? Maybe a video on that setup would be helpful (I also find debugging a pain on macOS).
@YoloMonstaaa3 жыл бұрын
It's just a VScode feature, you saw him click on the other terminal.
@EnkiMVP3 жыл бұрын
you also have an extension on VScode for remote programming, you basically edit your source files on the VM and compile them there
@EnkiMVP3 жыл бұрын
gdb needs to be digitally signed first, you need to create a certificate and then sign it; also you need to kill taskgated before starting gdb. this is how I got it to work on my Macbook pro 16
@LRFLEW2 жыл бұрын
I think the solution Apple expects you to use is to use the Clang sanitizers. They are generally faster than Valgrind, with the trade-off being that you need to recompile the code you want to test. Either the memory or address sanitizer (I forget which) should be able to catch the double-free bug that Valgrind did here.
@Squish8883 жыл бұрын
An M1 Mac adds another layer of pain. Docker containers saved my life.
@captainfordo13 жыл бұрын
Doesn’t Rosetta do all the work for you?
@ramueller112 жыл бұрын
I've programmed C on the three OSes and personally found Apple to be the worst experience. I remember at one point having to figure out how to upgrade an outdated OpenSSL binaries to connect to a server and it was basically a exercise in futility to compile from source. POSIX on Windows can be a pain to setup, but its definitely a viable option as well. What I was pleasantly surprised with was the relatively new Chrome OS to support a real Linux distro based on Ubuntu. VS Code is supported on it. So between the text editor, web browser and gnu terminal, it's a viable hobbist machine.
@CaptainWumbo3 жыл бұрын
I've been programming 10 years now and never really use debugger. A lot of coworkers can't live without it but I think it encourages them to write hard to read code and to do too much in each iteration and undervalue fast startup. Obviously not an answer to how to make these tools work in MacOS, but just a consideration that you may not need the debugger if you adopt a more iterative style. It's always easy to find a bug if it's in the last line of code you wrote. Takes forever if it's in the last 100 lines, and it shows when I pair with people, debugger and all.
@JacobSorber3 жыл бұрын
I definitely agree that incremental development, especially paired with automated testing, makes debugging 100X easier, whether you are using a debugger or not. But, this assumes that I'm the only one writing code. If I'm working with a team, I can't necessarily control how they work. Also, sometimes bugs crop up without writing any lines of code. I might, for example, update a library that my code uses - some behavior changes in that library, and now my code doesn't work anymore. So, I'm hunting through all the code to figure out what broke.
@BritishBeachcomber2 жыл бұрын
That's the difference between coders (who just write stuff to spec) and programmers (who really know the deeper algorithms and understand how to develop complete systems).
@Kefford6663 жыл бұрын
The worst thing about using a MacBook for me is having to constantly justify why I like using a MacBook 😅 One thing everyone seems to agree on though is the MacBook good build quality. Any time I’ve tried out other laptops I notice little things like loose hinges, deck flex, screen flex, loud fans, backlight bleed, rough edges. It didn’t bother me before but now I can’t ignore it 😆
@D0Samp2 жыл бұрын
I was under the assumption that Valgrind is essentially deprecated in favor of the various kinds of sanitizers available in modern compilers, which are available on macOS either way?
@mario75012 жыл бұрын
I switched to linux for the same reasons, and because it seems to get harder to figure out where libraries are on the system with every iteration of MacOS.
@moodsurfer4 ай бұрын
Hi, Jacob, would you recommend Mac as main machine for C++? Or problems with valgrind and GDB are crucial? I know that there are workarounds, but what do you think?
@HamishArb2 жыл бұрын
The most annoying thing to me is the removal of 32 bit support, since so many old things still rely on it. I've enabled it on mine using kernel boot flags, and can now get simple 32 bit apps running, but nothing with a UI works, they all seem to have different crashes and I don't know what to do with it (which apple obviously doesn't care about since they only support 64 bit now).
@bushidocodes3 жыл бұрын
Howdy all. Former OS GTA at GWU here. I heartily endorse Multipass for Mac OS users and WSL for Windows users. The SSH and WSL plugins for VSCode integrate really well with these tools, and you can keep your Linux dev environment lean and headless. Most of my former students were using one of these tools with VSCode and VSCode live share for remote pair programming on xv6 during remote learning. Not sure about how M1 support is coming along, but Multipass is from Cannonical and seems to have a good dev path. Docker is of course also an option.
@brianstorming13 жыл бұрын
In socket programming: Try to use accept() on macos, then connect around 200 workers with siege for example to your program, macos will simply not queue them for accpep() to dequeue them with each calls. On linux you can throw as many connection as you want on a socket, it will queue them up.
@ahmednagi70743 жыл бұрын
why are you not using normal editor
@lordadamson3 жыл бұрын
Maybe address sanitizers can help? They sure help me a lot. Although sometimes valgrind really is a must.
@wlcrutch Жыл бұрын
So, I am taking a course where we are programming an Atmega16 in assembly….I currently use UTM to emulate windows but what other microcontrollers have a good dev environment on a mac?
@wile97633 жыл бұрын
Not to mention that newer versions of macOS don't even ship with /usr/include anymore. You have to run some cryptic command after installing Xcode and Command Line Tools to get them and they disappear when you upgrade.
@IgnoreSolutions3 жыл бұрын
/usr/share exists. /usr/local/include exists. pkg-config also exists and works great. Stop hardcoding your include path strings.
@wile97633 жыл бұрын
/usr/include is the conventional location major compilers (including Apple Clang which ships with macOS) search for C standard library includes. This prevents the user from ever needing to hard code where these headers are. The user doesn't hard code this include path - it exists as a consistent location of these headers.
@IgnoreSolutions3 жыл бұрын
@@wile9763 You just proved my point. What does it matter if /usr/include is no longer present if the appropriate paths are searched for and libraries populated from other locations anyway?
@wile97633 жыл бұрын
Because they aren't present by default. That's what I am saying. macOS does not ship with the C standard includes by default.
@IamTheHolypumpkin3 жыл бұрын
The only time I programm on windows is when the University class requires me to do so. Most of the time this is because the (usually really bad) IDE is only on windows or the Linux/Mac version has something missing which is required. about halve a year ago I had to "code" in VHDL (FPGA Development is really fun) and while the IDE was available on Linux the tutor really recommended the windows version, I don't know why anymore.
@unclerojelio63203 жыл бұрын
Do you have a video on how to setup a Linux virtual machine on macOS?
@mensaswede40287 ай бұрын
I’ve written over a million lines of C code in the last 30 years in all 3 major OS. I’ve never used gdb or any kind of interactive debugger. Most of the code I write is semi-realtime so debugging interactively would completely change the behavior anyways. Instead I prefer plain old file logging and looking at the code. Hasn’t failed me yet. If I’m really in a pinch, valgrind is a good tool and I have used that from time to time.
@dripcode26007 ай бұрын
Do you have any video on your kernel hacks?! Please share!
@ranjithmkumar3 жыл бұрын
This is the exact pain I faced after I switched to mac 6 months back. I messed up the keychain access for gdb but still no use. So, I used xcode for debugging on Mac. In a way I like it. But still not a perfect environment. I dont think xcode does all things that valgrind does.
@RoboPhantomX3 жыл бұрын
I had trouble with VS on my Mac, possible tutorial coming soon?
@jerome142110 ай бұрын
I would be curious to see the code that fails when running normally and doesn't when using lldb.
@wlcrutch Жыл бұрын
When will valgrind be ported to Macos? seriously, we need this
@sababugs11253 жыл бұрын
Which Linux version do you use ?
@rishabhanand42703 жыл бұрын
I don't do low level stuff, but how do containers / just the docker environment work out for you? VSCode has remote containers and what not to connect to it.
@jorionedwards3 жыл бұрын
Don't apologize for not using Windows. It's pure pain for programming.
@lordadamson3 жыл бұрын
everything is pure pain for programming.
@aayushanand82853 жыл бұрын
@@lordadamson can't be any more true😂
@bushidocodes3 жыл бұрын
I suggest WSL for any Windows users out there. It's honestly a better developer experience than Mac OS at this point.
@akayysworld3 жыл бұрын
fr why the fuck is pip not in the path and python is py instead
@jorionedwards3 жыл бұрын
@@bushidocodes My trade school actually used WSL to introduce people to Linux. Unfortunately only the bare basics were taught (navigation, ifconfig, etc), man was never mentioned, and we were expected to Google everything else.
@FelipeMendez Жыл бұрын
I miss so many tools from Linux like valgrind or kdgraph etc, I tried docker but it’s not a full solution
@mrcrackerist3 жыл бұрын
So why not use Linux full time then? :)
@pushqrdx3 жыл бұрын
he said the reason at the beginning, honestly in terms of polish macOS shits on windows and linux, but i run linux still because it's that good when it comes to productivity and hackability that i am willing to forego over all polish
@mrcrackerist3 жыл бұрын
@@pushqrdx Zorin and Elementary OS
@pushqrdx3 жыл бұрын
@@mrcrackerist Use a Mac and you'll know why Zorin and eOS are nothing in comparison, it's not just the look, it's a complete ecosystem of very high quality apps combined with a very polish and pretty system, super smooth scrolling and animations, macOS easily stomps both Windows and Linux in that regard, sadly that's where it ends as you're very limited in customization so if you don't like what's out of the box, get lost and so i did and am happily using Linux now
@mrcrackerist3 жыл бұрын
@@pushqrdx To me MacOS feels sluggish and unpolished with worthless animations. As for apps I can't think of a single one that I would use in MacOS.
@pushqrdx3 жыл бұрын
@@mrcrackerist if macOS is sluggish and unpolished then literally every other operating system is pure garbage
@jamess17873 жыл бұрын
Objective-C anyone? (Is it even still a thing?)
@universalmusicgrouptalenta13074 ай бұрын
I was trying to find someone mention it ITS SO BAD like there’s so many cool apis on macOS that are locked behind objective c or swift
@imrank3403 жыл бұрын
Since you prefer Linux OS then you could program in to X11 using C? That will allow to demonstrate a new technique.
@BogdanTheGeek3 жыл бұрын
I have a double whammy of a problem similar to yours, but its the with the M1 mac. Most things are not compiled for it, especially python packages. I have a arm-none-eabi-gdb running just fine on my mac, not sure about the intel one, but it definitely didn't work installing "gdb" through brew. Edit, i use arm gdb for embedded systems, not OS programs, so not sure if it works for that.
@RobertFletcherOBE3 жыл бұрын
I was in the same situation between windows and linux.. I installed PopOS and now the only real reason I have windows installed is to play games.
@benjaminshinar95093 жыл бұрын
but what was the bug?
@LoesserOf2Evils3 жыл бұрын
Doesn’t Apple recommend XCode and its associated tools?
@IgnoreSolutions3 жыл бұрын
Of course they will, but Xcode is pretty bad tbh
@IgnoreSolutions3 жыл бұрын
I just use lldb on my 15” MBP (Big Sur) for basic debugging. I use a lot of packages from Brew without a problem on macOS, but I definitely agree. Linux is better for programming. It’s a shame Valgrind doesnt really work As a normie OS, macOS is one of the better ones for programming. Infinitely better than Windows. But when I want to get sh- done, Linux is the one
@Spiderboydk2 жыл бұрын
The worst thing, hands down, is Apples unrelenting refusal to obey any of the standards everybody else is following. Abandoning OpenGL, making Metal instead of supporting Vulkan, forcing Objective-C and its ecosystem, etc.
@1873Winchester Жыл бұрын
They suck and I would never give my money to them, just as bad as microsoft
@rcelyte2 жыл бұрын
Reminder to always enable -fsanitize=address for debug builds.
@tommy_14463 жыл бұрын
Or just use Rust and appreciate the magic of the borrow checker. The compile error messages are so helpful it feels the compiler is alive.
@wlcrutch Жыл бұрын
I stans corrected: Macports has a version of valgrind that works in macOS >11. I am in heaven now.
@sukivirus3 жыл бұрын
Macs are never focused for programmers from the beginning. It has Unix under the hood and good graphical display which encourages programmers to use it for programming. Even if you see today, they would encourage us to use Swift but then most of the documentation pushes for the development of IOS apps rather than MacOS. Macs also deprecate libraries for example Opengl out of the blue inorder to push their own library which only works with Swift. This is very sad for the programming community.
@thomasipad77193 жыл бұрын
Just one thing: What to like at the user interface of a Mac? Window management, Finder and Dock are so ... basic... nearly crippled compared to anything you can get on Windows or Linux! I’m really curious
@IgnoreSolutions3 жыл бұрын
once you add Magnet, it gets quite good - Workspace switching is fast and well integrated - Global menu bar is nice for laptop screens - Ability to use Adobe apps alongside a lot of Unix utilities & programming apps - Dont need to install WSL or MinGW to port a Linux application. - Works beautifully with 4k/hi dpi screens
@thomasipad77193 жыл бұрын
@@IgnoreSolutions Not really, it is horrific. I use Rectangle, which I prefer, but still. So many oversights and problems, really.
@wlcrutch Жыл бұрын
no/minimal heat and fan noise.
@KingJellyfishII3 жыл бұрын
I absolutely could not live without gdb and valgrind. Luckily I can tolerate the slightly "rough around the edges" experience of daily driving linux
@atidyshirt3 жыл бұрын
I think valgrind works on Mac, I can't remember if I had any trouble setting it up originally (couple of years back). I switch between Mac on a laptop and Linux on a desktop, pretty much got the same workflow on both, however I don't use gdb
@junosoft3 жыл бұрын
@@atidyshirt valgrind 'works' but has many bugs on mac. It says hello world has leaks, for example.
@atidyshirt3 жыл бұрын
@@junosoft oh ok, it worked alright for Uni last year, but this year I'm mostly on a Linux machine so not too sure
@junosoft3 жыл бұрын
@@atidyshirt if you can make valgrind work flawless on a recent mac os, please tell me how so
@wlcrutch Жыл бұрын
@@atidyshirt Does not. At least not anymore
@meisterlumpi78223 жыл бұрын
Yeah docker or can’t you just compile them from source? I guess Mac has some sort of C/C++ compiler? 🧐
@not_ever3 жыл бұрын
That's not how these things work. For example Apple hides some system libraries that valgrind needs for some functionality, so even though there is actually a valgrind version that you can install with homebrew for MacOS it doesn't have full functionality.
@OSrBurns3 жыл бұрын
You could start a project about programming a robot with ROS as it's a great opportunity for us to learn more about embedded systems and C/C++
@michaelkotthaus71203 жыл бұрын
It's the first time that I heard the term en.wikipedia.org/wiki/Heisenbug though I already had this kind of bugs.
@Tystros2 жыл бұрын
But this all seems so complicated compared to simply using Visual Studio on Windows? I don't understand why I would not want to use a fully featured IDE like VS. I never have to use any terminal commands to compile anything or debug anything, it just breaks where an error happens, and the Visual Studio tools like the Debugger and Profiler are awesome.
@pxolqopt35972 жыл бұрын
Its complicated to you because you never used it. In reality it is far simpler once you learn how to use it. Command line tools are usually more powerful than their GUI counterparts, and they give you back far more information. The workflow is more streamlined because instead of having to go through a million GUI elements to find what you want, all you have to do is type. And this typing means that your hands will thank you when you reach your mid life or 3/4 life.
@belesiu3 жыл бұрын
I’ve had decent experience on WSL (WSL2) on my Win-11 work laptop. I have a Mac and also run Linux on an old laptop and for me, WLS2 works pretty well in its terminal. BTW - love your videos!
@anve24413 жыл бұрын
line 20 should allocate for sizeof(bool *)
@Kenbomp Жыл бұрын
Gdb is not the best debugger but it's a cool hacker tool
@atkevindsouza2 жыл бұрын
subscribed, heisenbug caught me off-guard.
@arphenti25023 жыл бұрын
Nothing is better than programming with resistors
@sudarshanv97973 жыл бұрын
I think it's registers
@arphenti25023 жыл бұрын
@@sudarshanv9797 no
@TheVertical923 жыл бұрын
@@arphenti2502 do you mean transistors?
@sudarshanv97973 жыл бұрын
@@arphenti2502 who programs with resistors? They are analog devices
@jorionedwards3 жыл бұрын
Real programmers use butterflies. Everyone knows that.
@JJSogaard2 жыл бұрын
I love macOS but this is annoying. GDB and Valgrind need to get on the Mac...
@SuperHeroINTJ3 жыл бұрын
I had a MBP went Linux. And I am happy with NixOS!
@BritishBeachcomber2 жыл бұрын
The Mac problem is simple. It runs Unix, which is aimed at servers and corporates. Leading edge developers need Linux for its support base and innovation.
@atik73 жыл бұрын
How about windows with wsl2?
@Zephyrus03 жыл бұрын
Why not just Linux then?
@donoteatmikezila3 жыл бұрын
As soon as I saw the title I said "the worst thing is that valgrind stopped working", and the video didn't disappoint.
@evolagenda3 жыл бұрын
Package the tools in a container
@MaximYudayev3 жыл бұрын
“... is that it’s not Linux”
@wiskasIO10 ай бұрын
The problem is not the Mac is GDB itself, it sucks.
@MECHANISMUS3 жыл бұрын
How good Mac is too expensive for me!
@joachim46602 жыл бұрын
Do you know what you're saying? Apple supporting open and free development tools? Not happening bro.
@JacobSorber2 жыл бұрын
A guy can dream, can't he? 🙂
@nexovec3 жыл бұрын
You never play games? :(
@romangeneral232 жыл бұрын
The worse thing about programming on a MAC ? Answer: You are on a MAC
@vkoskiv3 жыл бұрын
I only do memory leak tracking with valgrind on my linux box. For random segfaults and crashes, the address sanitizer and undefined behaviour sanitizer give brilliant and helpful info without valgrind.
@jagadeeshkatla69323 жыл бұрын
I am using in wsl on windows. 🙂
@jerrygao14953 жыл бұрын
docker for MAC
@Sahilbc-wj8qk3 жыл бұрын
I only use Linux as main driver. Running directly it to hardware is what i prefer.
@EnsignRho3 жыл бұрын
Why don't you write a virtual CPU and port GCC and GDB to it so you can run the same test environment on every machine? It would also be a great teaching tool and debugging tool for millions of users. Write your CPU as a RISC-V.
@tomoghnosen3 жыл бұрын
Linux for Life
@mohamedamine-vx6mb3 жыл бұрын
You are the best Keep goings-on in your work , and God blessed you 🙏
@andr33182 жыл бұрын
Solution: dont buy a mac. Buy a normal pc bc there you are free. You can have windows or linux there.
@JohnHollowell3 жыл бұрын
Yeah, windows sucks. WSL helps in that you can ignore windows and just target POSIX compliant OSs (Linux, *BSD, MacOS).
@THEescapebanana Жыл бұрын
dev containers
@casperes09123 жыл бұрын
It doesn't have Valgrind. That's my answer. - I'd way the f**k rather code on a Mac than a Windows system for sure. Linux, I could do. But I primarily write code *for* Apple platforms, so, yeah
@casperes09123 жыл бұрын
^ This comment written before watching the video
@MrSkinkarde2 жыл бұрын
Only noobs need debuggers
@bokunochannel842073 жыл бұрын
hah, apple will force developer to use clang.
@ndugar85403 жыл бұрын
But you can install gcc with brew?
@bokunochannel842073 жыл бұрын
@@ndugar8540 will, they will.
@torarinvik49203 жыл бұрын
"as soon as Apple fixes these issues" The issue is price. That is why almost all public places use computers with Windows. Look around at your local pharmacy, bank, hospital ect. You will not find Mac's there. And certainly not in India or other third world contries.
@wlcrutch Жыл бұрын
Never switch to Windows. Sorry, not Sorry!
@NSResponder5 ай бұрын
So, you're not using the tools that apple provides at no cost, and you're complaining that GDB doesn't work well? You know GDB is open source, right? Why don't you fix it?
@JacobSorber5 ай бұрын
I think somebody needs a hug.
@NSResponder5 ай бұрын
@@JacobSorber Does that pass for a clever rejoinder in your social milieu?
@2005kpboy3 жыл бұрын
Linux all the way.. Ubuntuuuu...
@wlcrutch Жыл бұрын
Lol all the mac haters. 😂 Just like the hipsters who *must* have a mac. My only complaint is valgrind not working. Other than that, the hardware quality faaaar outweighs any minor annoyances of macos. I mean, if you’re going to do linux, then do Arch or something that really makes you have the linux ‘experience’ otherwise you are just using a worse posix environment. Haters gonna hate 😂😂
@NSResponder5 ай бұрын
Not Apple's fault that you choose to stick to your stone knives and bearskins.
@vitacell13 жыл бұрын
1:15 *GNU/Linux
@torarinvik49203 жыл бұрын
Windows is more advanced than Mac but less user-friendly, Linux is more advanced than Windows but less user-friendly than Windows. And yes, I have used all 3 of them. I grew up with Mac in the 90s and used Windows at friends houses at the time at the same time. I have installed and used a few Linux distros at several times in my life. Linux is extremely flexible, fast and stable but also very cumbersome and very little software runs on it. Do you want a lightning fast, very advanced and super safe car that can run on limited amount of roads? I rather use a mediocre OS that actually runs almost all consumer software. Mac is like a Ferrari, looks beautiful but you pay way, way to much for what you get. Buy the BMW's top model and you get the same if not higher quality car for much less money.
@1873Winchester Жыл бұрын
And it's not like you get underdog cred anymore for using mac.
@torarinvik4920 Жыл бұрын
@@1873Winchester Very true. I hate sitting in the shell for every task that is more advanced than double clicking an icon. Why can't they make a program that is a "system browser" an application where you do all of the most common tasks that you would do in the terminal". We are living in 2022 we shouldn't have to use terminals like that anymore. Terminal should only be for specific tasks that are impractical to do in GUI.
@m4l490n3 жыл бұрын
I see ranting about Apple, I automatically like, share, and subscribe. Although, I was already subscribed. Also, good for not using windows, never use windows, real developers don't use windows. Just embrace Linux Jacob!! Change all your computers and your family computers, and your students computers to Linux. Just tell your students, "if you aren't using Linux natively, not that VM or dual boot nonsense, you will automatically fail this class".
@JacobSorber3 жыл бұрын
Thanks Nicholas! It seems that there's a version of valgrind that works. Haven't had a chance to try it out yet, but the repo is here if you are interested (github.com/LouisBrunner/valgrind-macos )
@brianngetich0073 жыл бұрын
Need space before closing ) since as of now it's a dead link.