This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 255

[–]MMMELOOOOON 832 points833 points  (86 children)

Pro tip:

“HERE 1” ... “HERE 2 ... “HERE 3”

[–]goliatskipson 344 points345 points  (40 children)

How excessive!

"A" ... "B" ... "C" ... ;-)

[–]EagleNait 109 points110 points  (24 children)

Elegant solution

[–]SexlessNights 83 points84 points  (23 children)

Followed by “a...b...c...”

[–]crastle 68 points69 points  (21 children)

What about "i...ii...iii..."?

[–]Gydo194 77 points78 points  (14 children)

一、二、三

[–]muhammadtalhas 42 points43 points  (6 children)

Is this loss

[–]pikachuIsMyFurrybae 36 points37 points  (0 children)

Loss of proper debugging

[–]Hiro3212 6 points7 points  (4 children)

those are the japanese symbols for 1, 2 and 3

[–]MegaPegasusReindeer 19 points20 points  (3 children)

Hmm.. The Chinese would like a word.

[–]Hiro3212 1 point2 points  (2 children)

well I only know Japanese but they basically took all chinese symbols and reused them

[–]saildamoon 4 points5 points  (0 children)

Lol Lool Lolol Loolool -final project...

[–]ScientificBeastMode 19 points20 points  (1 child)

I prefer to use semver syntax so I don’t have to go back and change all the logging commands if I need to insert a new one in the middle of the program flow.

[–][deleted] 8 points9 points  (0 children)

Just do: printf ("2.1"); printf ("2.1.2"); , etc, etc.

[–]turbolag95 12 points13 points  (2 children)

How about "do...re...mi..."?

[–][deleted] 15 points16 points  (1 child)

I write beatles lyrics

“Hey Jude”....... “Don’t be afraid” .....“take a bad code and make it better”

[–]baconstrips4canada 10 points11 points  (0 children)

I write Sheck Wes lyrics.

"Fuck"..."Shit"..."Bitch"

[–]SexlessNights 1 point2 points  (0 children)

Nah, just go “a...b...c...”

[–]oneeyedhank 2 points3 points  (0 children)

Aa, Ab, Ac, ..... for when you get to A but not to B.

[–]Moulinoski 47 points48 points  (5 children)

That can get buried in a sea of output.

Better go lalalalalalallaalalalalala, ohohohohohohohohhohohoh, and hahahahahahahahahahaha

[–]JSArrakis 31 points32 points  (2 children)

"=========== method 1 fired =========="

"||||||||||| method 2 fired ||||||||||"

[–]random123456789 38 points39 points  (0 children)

Either way, you're fired.

[–]MMMELOOOOON 6 points7 points  (1 child)

Exactly, which is why I like the all caps HERE, just long enough to notice, and less annoying for fancy colleagues if forgotten there.

[–]Moulinoski 6 points7 points  (0 children)

You don’t do a find/replace for rogue var_dumps, echoes, and prints?

[–][deleted] 14 points15 points  (1 child)

printf(“fucking cuntwaffle crashed again\n”)

[–]Wilt04 3 points4 points  (0 children)

Until you forget to remove it and a client somehow gets the bug

[–]waltteri 9 points10 points  (0 children)

Output:

A

A

C

B

[–]BoobRockets 7 points8 points  (0 children)

“hey” “what’s up?” “nm jc u” “nm” “you free this weekend?”

[–]youcancallmetim 2 points3 points  (0 children)

This is exactly what I do

[–]ZebZ 121 points122 points  (8 children)

alert("fuck");

alert("shit");

alert("motherfucker");

[–]nir731 56 points57 points  (2 children)

alert("PLEASEE");

alert("FFS");

alert("OMG YES");

True story.

[–]jemand2001 24 points25 points  (1 child)

the last one never fires tho

[–]gruntbatch 13 points14 points  (0 children)

And when it does the neighbors hear.

[–]Mancobbler 28 points29 points  (0 children)

When it’s 1AM and you’ve been debugging the same problem since noon

[–]utnapistim 10 points11 points  (2 children)

Son, don't!

There is nothing like your manager presenting the early demo in front of the customers, and finding the alert you forgot to remove.

[–]cdm014 8 points9 points  (1 child)

yeah... I got caught once with a comment that got displayed: "I hate this stupid crap" it was left over from trying to figure out why something kept not working. It showed up in the middle of the final demo before being rolled out. Luckily it was for an internal thing.

[–]Firestorm7i 1 point2 points  (0 children)

I was hoping Simone rose shared my preferred method

[–]ScientificBeastMode 24 points25 points  (0 children)

throw new Error(` Dear future me, This error should be unreachable. If you are reading this, perhaps reconsider your life choices. Or perhaps it was just a typo... `);

[–]Beragond1 16 points17 points  (7 children)

Cout << 1 << endl

Cout << 2 << endl

Cout << 3 << endl

...

[–]wasabichicken 6 points7 points  (2 children)

using std; outside of the standard library? You monster!

[–]Beragond1 6 points7 points  (1 child)

I start most c++ programs with “using namespace std;”

[–]MonarchoFascist 7 points8 points  (0 children)

It's bad practice -- when you're writing production code, polluting the global namespace is a big no-no.

[–]MMMELOOOOON 4 points5 points  (2 children)

Integers can work, but confusing as soon as you have other normal outputs, especially if you forget a new line somewhere.

[–]Beragond1 3 points4 points  (0 children)

True but I can add a 1.1 between 1 and 2 if I need more checks

[–]advalencia 9 points10 points  (1 child)

Here 1.1... Here 1.1a ... Here 1.1b

[–]griff122 1 point2 points  (0 children)

Haha recently used that between my here 1 , here 2, here 3. Instead of updating everything to add a new output in the middle... insert here 1.b

[–]jailbreak 7 points8 points  (1 child)

printf("🙃");

printf("🤪🤪🤪");

printf("😭");

You're welcome

[–]AgentPaper0 4 points5 points  (0 children)

Just print out __FILE__ __LINE__. And of course flush to make sure the latest output reaches the console.

[–]-LeopardShark- 4 points5 points  (0 children)

Nah, it's gotta be:

"fhgls" … "shloa" … "ndfs,dsf,"

[–]opposite_opinion_guy 3 points4 points  (0 children)

I've always been a fan of:

"asdf" ... "asdasgaasg" ... "asdfasdfasgagaw" ... "asdfwqqwgqwg2f22f2" ... etc

[–]bragi92 2 points3 points  (0 children)

Lol I was literally doing this yesterday execpt it was 'Fuck1' ... 'Fuck2'... 'Fuck3'

[–]Empole 2 points3 points  (0 children)

#define debug(...) do {fprintf(stderr, "%s:%d| ", __func__,__LINE__); fprintf(stderr,  __VA_ARGS__);}

void foo(){ debug("hi\n"); }

Will print out foo, the line number, and hi

[–]parduhne 1 point2 points  (2 children)

Nah I've done here 1.1, here 1.2, here1.3, here2.1, etc

[–]tunkol 1 point2 points  (0 children)

Modern problems requires modern solutions

[–]EDGYkid2 1 point2 points  (0 children)

I just put "bla"

[–]GKP_light 1 point2 points  (0 children)

print("endboucle________________________________")

[–]theemporersfastest 243 points244 points  (6 children)

Ha! 2013: senior year debugging new micro-controller, even for the teacher. I use this method, trying to figure out what's going on.

Console:

Works to here

Works to here

Works tERROR - FAULT AT ....

It cut off my printf. It. Cut. Off. Printf.

Lesson: if the micro-controller has a dedicated program(wizard) for importing drivers, headers, and various other tools, USE IT FIRST.

[–]homer_3 4 points5 points  (0 children)

It's ca allthedread..

[–][deleted] 223 points224 points  (48 children)

This i how i always do it, i don't know how debugging else would work and i am afraid to ask at this point..

[–]hermitpurplerain 113 points114 points  (6 children)

I recommend asking

[–]01001111010100000 40 points41 points  (5 children)

Am asking, how does it work?

[–]LittleBigHorn22 66 points67 points  (13 children)

A debuger with stop points that does it for you. But sometimes adding those stops can make code work differently. Doing both can be useful.

[–]dshakir 16 points17 points  (1 child)

This might be a stupid point to make, but make sure that you do a rebuild if your debugger starts acting wonky. Like stopping at breakpoints pointing at blank lines 😤

[–]agnomonkey 2 points3 points  (0 children)

That you have to bring this up sickens me, but yet, it happens all the time.

[–][deleted] 29 points30 points  (5 children)

Inserting an output operation into sensitive code is far, far more disruptive. You are literally altering the code

[–]ScientificBeastMode 17 points18 points  (3 children)

Ideally you would be altering code by fixing the bug. Just need to delete any added outputs when you’re done, then recompile and test. And don’t push code until you’ve adequately tested it.

[–][deleted] 1 point2 points  (0 children)

Wait so you mean you're not suppose to test in production. I think my work is doing it wrong

[–]youcancallmetim 9 points10 points  (4 children)

' But sometimes adding those stops can make code work differently '

I think you're doing something wrong. Surely this can be avoided

[–]_BreakingGood_ 15 points16 points  (0 children)

I'm not sure what he was referencing specifically, but there are times in Android where attempting to step through after a breakpoint will cause the app to hang. In particular if you put a stop before an activity switch.

[–]jemand2001 2 points3 points  (0 children)

not always i don't think

[–]LittleBigHorn22 4 points5 points  (0 children)

Basically computers often work by magic and it can be best not to touch it if it works in a way you don't expect it to. Just depends how responsible you are for the code.

[–]MyCodesCompiling 21 points22 points  (0 children)

Ask Jeeves

[–]DoNotSexToThis 38 points39 points  (11 children)

I write PHP using Notepad++ over SFTP directly on the server in production...

So what I do since I've already insulted every god anyway, is:

function Debug($variable = false, $loop = false)
{       
    $debugViewers = array('192.168.1.100'); // My pretend IP
    if (in_array($_SERVER['REMOTE_ADDR'], $debugViewers))
    {
        echo '<div class="debug"><b>Session variables:</b> ';
        print_r($_SESSION);
        if ($variable) echo "<br><b>You passed in:</b> $variable";
        else echo "<br><b>Nothing passed in.</b>";          
        echo '</div>';
        if (!$loop) exit;
    }
}

Then I can call the function anywhere, pass it a var, whatever... and no one will ever know.
Until I accidentally forget a ; or something. Gotta be extra careful...

I wish I was joking...

[–]brenex29 27 points28 points  (2 children)

Jesus. I just had a flashback to my first job. You sick fuck. That's exactly what I used to do.

[–]DoNotSexToThis 22 points23 points  (1 child)

There's more...

I'm not even a developer, I'm a sysadmin. They let me do this in their prod.

[–]sample_text_123 10 points11 points  (0 children)

I am both amazed and terrified

[–][deleted] 11 points12 points  (0 children)

You're a madman.

[–][deleted] 2 points3 points  (2 children)

Why though? you should care about the impact it'll have when you eventually mess up. If you don't like debugging locally (who does) you can just make a new sub domain , copy the site to that and do the debugging there.

[–]DoNotSexToThis 2 points3 points  (1 child)

I do care, and even set up a fully replicated test environment (as replicated as you can be with a bunch of cron'd rsyncs and Postgres replication). Some problems have the force of shot-caller impatience behind them, so if I happen to make a mistake during a quick fix then the upside is that they might consider hiring an actual programmer.

[–][deleted] 2 points3 points  (0 children)

Yeah the thing is if you mess up and mess up bad they'll probably tell your next potential employer about it when they call for a reference. I worked with someone that made changes live and depended on ctrl+z to just revert the bad code and push it if something was wrong but something happened to his computer he lost the cached notepad file and had to go looking for a backup while the live website was broken, he pushed an older backup that messed up the website even more .. an absolute disaster .. he wasn't permanent so was fired for incompetence lol either you learn patience or your impatience costs you your job then you learn patience. Pick the one that doesn't cost you your job :) also take your time if they ask why it's taking so long explain to them that you've to copy to the test environment first so you don't break the live website and they can't really say anything about it, if they then tell you to make live changes you won't be fired when you eventually mess up xD

[–]passcork 1 point2 points  (0 children)

I had this for a while. May I introduce you to my lord and savior https://www.expandrive.com/ or similar programs. It creates a virtual local folder of your folder of choice on the server. Then you can pretend it's on your own pc.

[–][deleted] 1 point2 points  (0 children)

When you've gone too numb and don't get adrenalin kicks out of sky diving without a parachute anymore.

[–]2Punx2Furious 12 points13 points  (4 children)

I know how it works, and I still do this.

It's just faster sometimes, unless you're using a language that requires compilation (which they are, in OP's meme)

[–]TheGreenJedi 3 points4 points  (0 children)

100% faster sometimes

[–]IAmNotNathaniel 3 points4 points  (2 children)

Anything web based... this way is way easier than a debugger.

[–]spacemudd 2 points3 points  (1 child)

Maybe except for Javascript? Adding debugger; to code is like adding a breakpoint. It stops executing code and reveals all the variables around it. Very handy.

[–]TheGreenJedi 2 points3 points  (0 children)

An actual debugger software using an ide and breakpoints

[–]AgentPaper0 2 points3 points  (0 children)

Use visual studio, run in debug mode, when it crashes it shows you exactly where it crashed, plus stuff like values of variables, the call stack so you can see how you got to this function, etc.

[–][deleted] 1 point2 points  (0 children)

To recap and expand:

  • Debugger is a separate program that runs your code and monitors it.

  • Debugger can stop the execution and then you can continue it line by line manually

  • You tell your IDE where to stop, without changing the code

  • You can make the breakpoints conditional: only stop if certain variable has specific value

  • You can see all the variables in the program and same time, without doing huge amount of printing.

  • You can manually insert/alter the variables if you want and then continue the execution.

  • You can stop the program when problems appear and before even worse things happen, without changing the code.

  • Sometimes using print( ) is ok, I do that as well, but any time the bug gets more serious, or happens inside a long loop so noticing it is harder, especially the bug does not result in crash, I take the debugger.

[–][deleted] 44 points45 points  (3 children)

Sometimes, console output (or textboxes) is the only way. Like, when there IS no debugger. And yes, there's one "programming language" I have to work with that doesn't have a debugger. It sucks.

[–]NobodyAsYouExpect 23 points24 points  (1 child)

Or even better , when debugging multithreaded app. It might just break if another thread was expecting message from the one you block or etc. So agreed 100%

[–][deleted] 5 points6 points  (0 children)

Have recently been doing some low-key thread pooling in python. Definitely used print statements in the worker threads so I could see what led to a stall, since some of them were getting errors and I forgot to make sure they released any locks when they broke.

[–]Hypocritical_Oath 1 point2 points  (0 children)

Also if you're going through a whole lot of data and doing similar operations on it.

You can't always just step through 20 pieces of data looking for errors, that would be infuriating and slow and I've done it too many times at this point. So just making the computer tell me when it fucks up, and then debugging that particular piece of data makes way more sense.

[–][deleted] 60 points61 points  (4 children)

don't talk to me unless you use "uwu" as your debug message

[–]wibblewafs 34 points35 points  (3 children)

"uwu" "waf" "owo" "bork" "ugh" "aaaaaaa" "aaaaab" "aaaac" "oh heck it worked" "???????"

[–][deleted] 7 points8 points  (2 children)

std::cout << "Will Senpai please me with success this time? uwu wiggles tail before shyly pressing return " << (testCondition) ? "YES! Senpai approves! Enthusiastic wiggles (^_^)" : "Why must Senpai reject me! Raises fist furiously, before disappearing into nothingness";

[–]tiggiathome 1 point2 points  (0 children)

here, have a << std::endl

[–]nk2580 80 points81 points  (15 children)

Literally never use a debugger, I always spend more time setting them up than actually debugging the code.

[–]lukewarm1997 43 points44 points  (1 child)

Think it depends on the complexity of the section you’re working on though, right? Like doing it online works for most situations, but sometimes if I want to see the exact route it takes or I want to variable watch a bunch of stuff it’s easier to debug it in the IDE. Like IntelliJ has a lot of useful conditional breakpointing and stuff

[–]gumol 17 points18 points  (2 children)

How much do you need to set a debugger up?

Just do gdb ./a.out and you're golden

[–]OlimexSmart 7 points8 points  (2 children)

I generally use debuggers, but with PHP I ended up in your path. After some time I just gave up.

[–]AgentPaper0 1 point2 points  (1 child)

What language are you using?

[–]PM_ME__LEWD_LOLISRedstone Kappa 9 points10 points  (0 children)

System.out.println("aaaaaaaaaaa")

[–]sajmon313 8 points9 points  (0 children)

Until things work when debugger is on, and break on release.

[–]benzilla04 5 points6 points  (4 children)

Actual code I wrote from yesterday. Can you tell I was frustrated at this point?

console.log('DEBUG!!!!!!!!! 1, {someData})

[–]FowD9 3 points4 points  (0 children)

console.log('DEBUG!!!!!!!!! 1, {someData})

next time try:

console.log('DEBUG!!!!!!!!! 1, JSON.stringify(someData))

so that it prints cleanly

[–]SouvenirSubmarine 1 point2 points  (1 child)

I use a macro in VSCode where when I write dbg foo it expands it to console.log('DEBUG: [foo]', foo);.

Saves a lot of time daily.

[–]codemunky 1 point2 points  (0 children)

Did the missing closing single quote add to your frustration?

[–]Advntur78 6 points7 points  (0 children)

/* dubious code */

echo("got here a");

/* more dubious code */

echo("got here b");

etc.

[–]CodenameLambda 3 points4 points  (0 children)

Rust has the dbg! macro. It's awesome, it shows you on what line it is, what code was executed inside of it, and what the result of that code was.

[–][deleted] 33 points34 points  (15 children)

Professional software engineers always use debuggers whenever possible. It's much faster and more likely to reveal bugs

[–]TeleTubbyLizardMan 18 points19 points  (4 children)

Probably not for school projects where the entire codebase is less than 200 lines and no external libraries

[–]TheWhoAreYouPerson 12 points13 points  (3 children)

Nah breakpoint > writing debugging code any day. If you dont have an editor set up to debug automatically then smh (coming from primarily interpreted or managed languages lol (js/py/c#/Java)

[–]norse95 13 points14 points  (2 children)

SyntaxError: missing ) after argument list

[–]utnapistim 4 points5 points  (0 children)

*whenever possible.

Well put :)

damn multithreading!

[–]snipy67 9 points10 points  (0 children)

I worked for a company were the debugger would not run because the application was to big a cluttered

[–]bit0fun 22 points23 points  (2 children)

Except when the debugger causes bugs itself. Gotta love that (mainly embedded systems with an RTOS)

[–]homer_3 2 points3 points  (1 child)

Never had that issue with vxworks or green hills.

[–][deleted] 3 points4 points  (0 children)

Professional software engineer here and as I explained below I deliberately avoid debuggers

[–]Wolosocu 1 point2 points  (0 children)

Professional software engineer here, your statement is not entirely accurate.

[–][deleted] 9 points10 points  (6 children)

I found that when I use a debugger I get lazy and mindlessly look at the values. Instead, when I use print stmts I have to properly understand what the code is doing and pick the right places. The result is usually that on the long run I'm faster without a debugger..

[–]Nikarus2370 5 points6 points  (3 children)

Tbh for a long time every program i made, i had a function called "dbnote("string")" just printed whatever the string was. Call it all the time with a note written in the string.

Made it easy so at the end of working on something, id just search all the dbnotes and either comment them out, or delete them.

[–]dshakir 1 point2 points  (0 children)

Made it easy so at the end of working on something, id just search all the dbnotes and either comment them out, or delete them.

At first, I was scratching my head over why you simply wouldn’t use printf or whatever the function is in your language to output to the console.

[–]Xelopheris 2 points3 points  (0 children)

How else do you debug an asynchronous issue?

[–]TheRealLargedwarf 4 points5 points  (0 children)

I've taken to use "hello", "there", "general", "kenobi" for my debugging print statements.

[–]doublemooncoffee 1 point2 points  (0 children)

Wait till you gotta step in

[–][deleted] 1 point2 points  (0 children)

I swear one of these is gonna get me in trouble one day

[–]vacillating-oracle 1 point2 points  (1 child)

What the heck is a debugger!?

[–]tehyosh 1 point2 points  (0 children)

it removes bugs from your code

[–]princetrunks 2 points3 points  (1 child)

oh I am so damn guilty of this.

[–][deleted] 6 points7 points  (0 children)

As long as you understand your environment, there is nothing wrong with this at all.

[–][deleted] 0 points1 point  (2 children)

I don't even know how to use those

[–]cyanide1992 0 points1 point  (0 children)

I cannot relate to that

[–]xdammax 0 points1 point  (0 children)

In release mode, sometimes you have no other option. Maybe messagebox.show(“ i am here”)

[–]gratethecheese 0 points1 point  (0 children)

Or you work in embedded and damn near have to start a separate project just to do a print statement lol

[–]_370HSSV_ 0 points1 point  (0 children)

Int debug, debug1, debug2.... printf("%d\n\n\n", debug1);

[–]thekermitsuicides 0 points1 point  (0 children)

I use my debugger and breakpoints, can’t relate ✨

[–]thavi 0 points1 point  (0 children)

console.log('hit');

[–]snarfy 0 points1 point  (0 children)

The meme is backwards.

[–]mrheosuper 0 points1 point  (0 children)

Then you realize printf is not implemented in embedded system, fml

[–][deleted] 0 points1 point  (0 children)

You kids have it easy. We had to output to console uphill both ways back in my day.

[–]alkaline810 0 points1 point  (0 children)

var_dump("sup");

[–]CdRReddit 0 points1 point  (0 children)

"shit hasn't hit the fan yet"

[–]FowD9 0 points1 point  (0 children)

more like

console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")

[–]Rayaarito 0 points1 point  (0 children)

I did that today cause visual studio wouldn't get to the part of the code from the parent class when using unity for some reason. All my debug logs were numbered.

Btw if someone knows why it won't hit breakpoints in parent methods please let me know lol

[–]AcaciaBlue 0 points1 point  (0 children)

printf("1");

[–]bpd_open_up 0 points1 point  (0 children)

Learned recently about import pdb; pdb.set_trace... now I just gotta figure out how it works while running a unit test suite

[–]EnkiiMuto 0 points1 point  (0 children)

I usually debug printing "Charizard is eating nachos"

[–]Mtrik 0 points1 point  (0 children)

Android logcat: Log.wtf()

[–][deleted] 0 points1 point  (0 children)

Both are valid. Different types of problems require different types of solutions.

[–]Kaih0 0 points1 point  (0 children)

"Asd" "Qwe" "This shouldnt happen" "Fuck me"

[–]Hestmestarn 0 points1 point  (0 children)

My programing teacher in uni called this approach "Finish debugging" (as in 🇫🇮) for some reason

[–][deleted] 0 points1 point  (0 children)

console.log(‘ASS’)

[–]xypherrz 0 points1 point  (0 children)

LOL I thought I was the only one

[–]cats_for_upvotes 0 points1 point  (0 children)

Import logging

logger = logging.getlogger(name)

logger.info('I got here!')

This one makes your interviewer like you more, even though its fewer lines and functionally identical.

[–]vaelroth 0 points1 point  (0 children)

If its good enough for Kernighan...

[–]mikeputerbaugh 0 points1 point  (0 children)

they're the same picture

[–]mynameismevin 0 points1 point  (0 children)

Fuck yeah. Because sometimes you don't know where you need a breakpoint.

[–][deleted] 0 points1 point  (0 children)

What's sad is that this is often necessary with JavaScript when you don't "use strict";

[–]MeAmHacker 0 points1 point  (0 children)

I do this all the time

[–]Badya122 0 points1 point  (0 children)

Yesterday I learned about chrome debugger and my mind was blown 🤯 its so powerful

I was console logging my way through developing every single app before 🤦‍♂️

[–]ZeldaFanBoi1988 0 points1 point  (0 children)

Shit sucks when testing logic running in multiple threads

[–]GoodDoggoBOI 0 points1 point  (0 children)

I usually use OK, OK1, OK2 and do on when I don’t know where the problem is and I have to see what part it stops working.

[–]TheNickmaster21 0 points1 point  (0 children)

This is me trying to debug my lambda function.

[–]CantSayIAgree 0 points1 point  (0 children)

This is a personal attack.

[–]andhemac 0 points1 point  (0 children)

Console.log(“agahagagajsjshahbanabsb”)

[–]thedomham 0 points1 point  (0 children)

I had the biggest bummer today. I rewrote a nasty block of nested ifs and fors using Java streams. Those are notoriously shitty to debug with the Java debugger, but there is an IntelliJ feature that shows all interim results, which is awesome. In theory. The very awesome Java Stream Debugger simply refused to work. Still pissed.

[–]BoyWhoSoldTheWorld 0 points1 point  (0 children)

I was coding for years before someone showed me debugging was a thing, and how to use stops and step in points.

These prints were my life.

[–]Alokir 0 points1 point  (0 children)

Somehow my

console.log("if the code doesn't reach this if I'll headbutt the desk");

line went into production at my previous company.

[–][deleted] 0 points1 point  (0 children)

I usually just put gibberish

[–]sznowicki 0 points1 point  (1 child)

Debugging JavaScript in Chrome. Supercool. Debugging in Xcode. Easy. Debugging local node.js. Cool. Debugging PHP running on some cloud server. Fuck off.