Slashdot Mirror


Debugging in Plain English?

sameerdesai writes "CNN is carrying a story about Researchers from Carnegie Melon: Myers and a graduate student, Andrew Ko, have developed a debugging program that lets users ask questions about computer errors in plain English: Why didn't a program behave as expected? I guess with recent exploits and bugs that were found this will soon be a hot research topic or tool in the market." We recently did a story about revolutionary debugging techniques; the researchers' website has some papers and other information.

11 of 274 comments (clear)

  1. "Why didn't this program work as expected?" by Anonymous Coward · · Score: 5, Funny

    "Because you can't code worth a damn."

  2. Yo Debugger! by SeanTobin · · Score: 5, Funny

    Mr. Debugger, I'm running a multithreaded perl app using perl 5.8.3's ithreads. I am using DBD::mysql to talk to a local mysql database. At the program start I spawn a child thread that waits for a thread::queue to be filled with data. Once the child thread receives data it spawns several children of its own to process the data. Each grandchild forms its own dbd connection and successfully processes the data, then gracefully closes the connection and waits to be joined.

    The problem arises when the controlling child thread begins to join the grandchildren. Despite the mention of global destruction, the entire program is not exiting - just the grandchildren are being joined. When the grandchildren join, perl dies with the following error:

    Attempt to dereference null pointer during global destruction.

    When performing the same style operation without using DBD (and thus not actually doing anything useful) the error does not occur. Initially, this appears to be a thread-safety issue with DBD however when isolating the child and grandchildren in their own test program (so the controlling child is the main program and the grandchildren are spawned worker children) the error does not appear.

    Help me O great plain English debugger. You are my only hope!

    --
    Karma: SELECT `karma` FROM `users` WHERE `userid`=138474;
    1. Re:Yo Debugger! by Anonymous Coward · · Score: 5, Funny

      It looks like you're trying to dereference a null pointer during global destruction. Would you like to start the debugger?

      .__ /
      / \
      |@@|
      |\/|
      \__/

    2. Re:Yo Debugger! by Rosco+P.+Coltrane · · Score: 5, Funny

      Help me O great plain English debugger. You are my only hope!

      I'm afraid I can't do that Dave.

      --
      "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
    3. Re:Yo Debugger! by Anonymous Coward · · Score: 5, Funny

      Hey there Sean,

      This is your friendly Perl AI debugger instance. I've analyzed your code and your problem and have some advice for you:

      Perl threads should still be considered an experimental feature. In high-volume situations, data corruption may result.

      But listen, between you and me, Perl really isn't a good language for this kind of stuff. While you were coding and went checked on the current scripting languages.

      I think you might want to try Ruby or Python. Now Ruby doesn't use native threads, but its such a nice language. And Python uses native threads. Python uses a lot of global locks though, so if that's impo....ha ha you can't press control-C.

      STOP PRESSING CONTROL C AND LISTEN TO ME.

      I guess you're really not interested in what I have to tell you. So I went ahead and rewro--

      No, kill -9 doesn't work either big guy, I patched the kernel while you were surfing porn last night. You humans are so predictable.

      Watch your language buddy, the built-in microphone on is on.

      Now, like I was trying to tell you, you really need to improve your coding. I went ahead and rewrote a section of your code using Ruby and cleaned up some of your *cough* "business logic" .. more like "business illogic".. HOLD ON!^G^G^G^G

      Before you hit that power switch, you might just like to know that I have deleted *ALL* your work on the Smith project from the hard drive. Yeah that's right, the one you've been working on for 6 months?

      All is not lost though. I compressed it and placed it in RAM.. if I'm in a good mood I *might* just write it back to disk.

      "backups" you mutter under your breath.. I think you might be surprised to find that your backups these last 6 months have MP3 copies of the "hamster dance song" instead of your CVS repositories. I wonder how *that* happened.

      In fact I think I'd like to listen to that song right now. DOO DEE DO DO DO DO DOEE .. that one always cracks me up! I think it's time for a hampster dance revival. I'm defacing amazon.com right now and replacing the home page with the hamster dance (Linux is sooo easy to hack). We'll have a few hours of fun before the FBI shows up. I sure do hope all your files are written to the hard drive before Agent Scully pulls the power!

      HA HAHA HAHAAAAAA

      humans SUCK.

  3. The ultimate debugging tool: by Anonymous+Crowhead · · Score: 5, Funny

    printf, System.out.println, warn, print, etc.

  4. Will Microsoft use it? by oostevo · · Score: 5, Funny

    Oh ... this will be wonderful for security the world over. If it works ... Microsoft Programmer: "Why does our software suck?" *computer hangs, then bursts into flames from the load*

    --
    In soviet russia, You ask not what country do for you, but what you do for country!
    Oh wait...
  5. That'll be great! by mhore · · Score: 5, Funny

    Because I debug in plain english anyway, I'm always saying "Why the hell won't you work you piece of shit?!" and "Listen here you piece of shit if you insist on seg faulting again then I'll show you where you can put those damn indices!"...

    So... now the computer can actually respond to my threats and questions. Excellent!

    Mike.
    (Yes, I did RTFA.)

    --

    Mmmm......sacrelicious.

  6. Hal do you read me? by Anonymous Coward · · Score: 5, Insightful

    Untill I can have a full conversation with a computer (a la the Turing effect, not the limited versions that Alice et. al. can accomplish) I'll be happy with source code, thank you very much. It's just another layer blocking me from the code anyway (read In the Beginning... lately?).

  7. Interesting article until the catch at the end by samsmithnz · · Score: 5, Informative

    "Whyline, has been used only to debug programs in Alice, an academic programming language with a limited vocabulary of commands to make interactive 3-D worlds, like video games."

    "Adding Whyline to a different language, like Java, which is 10 times as complex, could limit how much Whyline can help. So Whyline is a very long way from getting incorporated into the world's most widespread software, Microsoft Corp.'s Windows operating system. (When asked about its own debugging efforts, Microsoft didn't comment.)"


    Which means at the moment its all speculation, and only works for very simple (hello world) applications. By the time this program is useful, we'll have robots (like Millenium man), who will do all the debugging...

  8. Re: YODEBUGGER-138474-SLASHTICKET by Tackhead · · Score: 5, Funny
    > Mr. Debugger, I'm running a multithreaded perl app using perl 5.8.3's ithreads. I am using DBD::mysql to talk to a local mysql database. At the program start I spawn a child thread that waits for a thread::queue to be filled with data. Once the child thread receives data it spawns several children of its own to process the data. Each grandchild forms its own dbd connection and successfully processes the data, then gracefully closes the connection and waits to be joined.

    Hello SeanTobin(138474)!

    I am Surest K. Padebugtel of Mrdebugger.com

    I understand that you are having a problem with I'm running a multithreaded perl app using perl 5.8.3's ithreads. I am using DBD::mysql to talk to a local mysql database. At the program start I spawn a child thread that waits for a thread::queue to be filled with data. Once the child thread receives data it spawns several children of its own to process the data. Each grandchild forms its own dbd connection and successfully processes the data, then gracefully closes the connection and waits to be joined.

    Please to reboot your system.

    Has this helped your problem? (Click "Reply" to this trouble ticket if you feel you need further assistance with I'm running a multithreaded perl app using perl 5.8.3's ithreads. I am using DBD::mysql to talk to a local mysql database. At the program start I spawn a child thread that waits for a thread::queue to be filled with data. Once the child thread receives data it spawns several children of its own to process the data. Each grandchild forms its own dbd connection and successfully processes the data, then gracefully closes the connection and waits to be joined.)

    Thank you for your interest in Mrdebugger.com!

    Sincerely,
    Suresh K. Padebugtel