Author Topic: Problem with debugger  (Read 28583 times)

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #15 on: March 08, 2007, 08:42:55 pm »
What's in your shell & terminal entries?

Menu=>Setting->Enviornment.


Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #16 on: March 08, 2007, 08:44:43 pm »
Code
Command-line: /usr/bin/gdb -nx -fullname  -quiet -args bin/Debug/test
Working dir : /home/mark/test/
> set prompt >>>>>>cb_gdb:
Executing: xterm -T 'Program Console' -e sleep
Using host libthread_db library "/lib/tls/libthread_db.so.1".
(gdb) >>>>>>cb_gdb:
> show version
GNU gdb 6.5
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-slackware-linux".
>>>>>>cb_gdb:
> set confirm off
>>>>>>cb_gdb:
> set width 0
>>>>>>cb_gdb:
> set height 0
>>>>>>cb_gdb:
> set breakpoint pending on
>>>>>>cb_gdb:
> set print asm-demangle on
>>>>>>cb_gdb:
> set unwindonsignal on
>>>>>>cb_gdb:
> set disassembly-flavor att
>>>>>>cb_gdb:
> directory /home/mark/test/
>>>>>>cb_gdb:
> delete breakpoints
>>>>>>cb_gdb:
> break "/home/mark/test/test.cpp:17"
Breakpoint 1 at 0x8048a5b: file /home/mark/test/test.cpp, line 17.
>>>>>>cb_gdb:
Executing: ps x -o tty,pid,command
PS result: ?        27347 gaim
PS result: ?        27119 kio_file [kdeinit] file /tmp/ksocket-mark/klauncherMOSOQb.slave-socket /tmp/ksocket-mark/kdevelopKzOKsa.slave-socket
PS result: ?        25985 konqueror [kdeinit] --silent         
PS result: ?        20333 /usr/local/apps/firefox/firefox-bin
PS result: ?        20328 /bin/sh /usr/local/apps/firefox/run-mozilla.sh /usr/local/apps/firefox/firefox-bin
PS result: ?        20325 /bin/sh /usr/local/apps/firefox/firefox
PS result: ?        15990 xchat
PS result: ?        12097 kio_uiserver [kdeinit]               
PS result: ?         3253 ps x -o tty,pid,command
PS result: ?         3240 /usr/bin/gdb -nx -fullname -quiet -args bin/Debug/test
PS result: ?         2537 codeblocks
PS result: ?         1694 konqueror [kdeinit] -session 108f363330000117332767600000070480034_1173327676_271749
PS result: ?         1645 superkaramba -session 108f363330000117290000300000036900011_1173329213_704079
PS result: ?         1644 superkaramba -session 108f363330000117290000100000036900010_1173329213_704426
PS result: ?         1642 superkaramba -session 108f363330000117285908400000027280029_1173329213_704201
PS result: ?         1638 kaccess [kdeinit]                     
PS result: ?         1630 kicker [kdeinit]                     
PS result: ?         1627 kdesktop [kdeinit]                   
PS result: ?         1623 kwin [kdeinit] -session 108f363330000117208531500000062480000_1173329221_738408
PS result: ?         1621 ksmserver [kdeinit]                   
PS result: tty1      1619 kwrapper ksmserver
PS result: ?         1606 kded [kdeinit] --new-startup         
PS result: ?         1604 klauncher [kdeinit] --new-startup     
PS result: ?         1600 dcopserver [kdeinit] --nosid         
PS result: ?         1597 kdeinit Running...                   
PS result: tty1      1569 /bin/sh /opt/kde/bin/startkde
PS result: tty1      1567 /bin/sh /usr/X11R6/lib/X11/xinit/xinitrc
PS result: tty1      1556 /usr/X11R6/bin/xinit /usr/X11R6/lib/X11/xinit/xinitrc -- -auth /home/mark/.serverauth.1540
PS result: tty1      1540 /bin/sh /usr/X11R6/bin/startx
PS result: tty1      1514 -bash
PS result: pts/1      559 -bash
PS result: ?          558 konsole [kdeinit] --ls               
PS result: TT         PID COMMAND
Console Execution error:failed to find console tty.
> start
Breakpoint 2 at 0x8048a44: file /home/mark/test/test.cpp, line 13.
main () at /home/mark/test/test.cpp:13
/home/mark/test/test.cpp:13:142:beg:0x8048a44
>>>>>>cb_gdb:
> info program
Using the running image of child process 3254.
Program stopped at 0x8048a44.
It stopped at a breakpoint that has since been deleted.
Type "info stack" or "info registers" for more information.
>>>>>>cb_gdb:
> cont
Breakpoint 1, main () at /home/mark/test/test.cpp:18
/home/mark/test/test.cpp:18:243:beg:0x8048a5b
>>>>>>cb_gdb:
> info locals
value = '\0' <repeats 80 times>
upper_count = -1208292500
>>>>>>cb_gdb:
> info args
No arguments.
>>>>>>cb_gdb:
> next
/home/mark/test/test.cpp:19:309:beg:0x8048a70
>>>>>>cb_gdb:
> info locals
value = '\0' <repeats 80 times>
upper_count = -1208292500
>>>>>>cb_gdb:
> info args
No arguments.
>>>>>>cb_gdb:
> next
Please type in a String (max. 80 characters):
Program received signal SIGINT, Interrupt.
0xb7e1846e in __read_nocancel () from /lib/tls/libc.so.6
>>>>>>cb_gdb:
> info locals
No symbol table info available.
>>>>>>cb_gdb:
> info args
No symbol table info available.
>>>>>>cb_gdb:
> quit

Ahhh, the sleep count is missing. Let me do some looking.

kramed

  • Guest
Re: Problem with debugger
« Reply #17 on: March 08, 2007, 08:44:59 pm »
Stock defaults:

/bin/sh -c

&

xterm -T $TITLE -e

kramed

  • Guest
Re: Problem with debugger
« Reply #18 on: March 08, 2007, 08:47:00 pm »
I have to leave for class right now. Ill be back this evening (EST) to check again. Thank you for all the help so far, I appreciate it. I am pretty familiar with C::B and I like it, I just need the console with the debugger.

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #19 on: March 08, 2007, 08:49:43 pm »
would you do a "ps x -o tty,pid,command" for me and paste the results here. Thanks

kramed

  • Guest
Re: Problem with debugger
« Reply #20 on: March 08, 2007, 08:51:44 pm »
Code
TT         PID COMMAND
tty1      1514 -bash
tty1      1540 /bin/sh /usr/X11R6/bin/startx
tty1      1556 /usr/X11R6/bin/xinit /usr/X11R6/lib/X11/xinit/xinitrc -
tty1      1567 /bin/sh /usr/X11R6/lib/X11/xinit/xinitrc
tty1      1569 /bin/sh /opt/kde/bin/startkde
?         1597 kdeinit Running...
?         1600 dcopserver [kdeinit] --nosid
?         1604 klauncher [kdeinit] --new-startup
?         1606 kded [kdeinit] --new-startup
tty1      1619 kwrapper ksmserver
?         1621 ksmserver [kdeinit]
?         1623 kwin [kdeinit] -session 108f363330000117208531500000062
?         1627 kdesktop [kdeinit]
?         1630 kicker [kdeinit]
?         1638 kaccess [kdeinit]
?         1642 superkaramba -session 108f36333000011728590840000002728
?         1644 superkaramba -session 108f36333000011729000010000003690
?         1645 superkaramba -session 108f36333000011729000030000003690
?         1694 konqueror [kdeinit] -session 108f3633300001173327676000
?         7962 kio_file [kdeinit] file /tmp/ksocket-mark/klauncherMOSO
?         8506 konsole [kdeinit] --ls
pts/1     8507 -bash
pts/1     8609 ps x -o tty,pid,command
?        12097 kio_uiserver [kdeinit]
?        15990 xchat
?        20325 /bin/sh /usr/local/apps/firefox/firefox
?        20328 /bin/sh /usr/local/apps/firefox/run-mozilla.sh /usr/loc
?        20333 /usr/local/apps/firefox/firefox-bin
?        25985 konqueror [kdeinit] --silent
?        27119 kio_file [kdeinit] file /tmp/ksocket-mark/klauncherMOSO
?        27347 gaim

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #21 on: March 08, 2007, 09:00:12 pm »
Are you sure the line:

 cmd << 80000 + ::wxGetProcessId(); //make a unique sleep command

is in your patched code

Code
// ----------------------------------------------------------------------------
int DebuggerGDB::RunNixConsole()
// ----------------------------------------------------------------------------
{
    // start the xterm and put the shell to sleep with -e sleep 80000
    // fetch the xterm tty so we can issue to gdb a "tty /dev/pts/#"
    // redirecting program stdin/stdout/stderr to the xterm console.

  #ifndef __WXMSW__
    wxString cmd;
    wxString title = wxT("Program Console");
    m_nConsolePid = 0;
    // for non-win platforms, use m_ConsoleTerm to run the console app
    wxString term = Manager::Get()->GetConfigManager(_T("app"))->Read(_T("/console_terminal"), DEFAULT_CONSOLE_TERM);
    //term.Replace(_T("$TITLE"), _T("'") + _T("*nixConsole") + _T("'"));
    term.Replace(_T("$TITLE"), _T("'") + title + _T("'"));
    cmd << term << _T(" ");
    cmd << wxT("sleep ");
    cmd << 80000 + ::wxGetProcessId(); //make a unique sleep command

    Manager::Get()->GetMacrosManager()->ReplaceEnvVars(cmd);
    //Manager::Get()->GetMessageManager()->Log(m_PageIndex, _("Executing: %s"), cmd.c_str() );
    DebugLog(wxString::Format( _("Executing: %s"), cmd.c_str()) );


« Last Edit: March 08, 2007, 09:55:41 pm by Pecan »

kramed

  • Guest
Re: Problem with debugger
« Reply #22 on: March 09, 2007, 12:55:51 am »
It is in there. I verified the patch and debuggergdb.cpp and debuggergdb.h

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #23 on: March 09, 2007, 01:13:09 am »
Something is wrong with that line. All you're getting in your log is:

"Executing: xterm -T 'Program Console' -e sleep"

It should be like this one:

"Executing: xterm -T 'Program Console' -e sleep 81234"

if the 80000+pidNumber isn't there, the console flashes as you described because no sleep seconds are specified.

Please zip up debuggerGDB.cpp and debuggerGDB.h and attach them to a message here.




kramed

  • Guest
Re: Problem with debugger
« Reply #24 on: March 09, 2007, 01:17:31 am »
Hope you find something I dont...

Thanks for all your help.

[attachment deleted by admin]

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #25 on: March 09, 2007, 01:35:46 am »
Would you run an xterm
then :

sleep 81234

then :

ps x -o tty,pid,command

then paste the output to me.

thanks

I'm wondering if the number even shows up.

« Last Edit: March 09, 2007, 01:37:19 am by Pecan »

kramed

  • Guest
Re: Problem with debugger
« Reply #26 on: March 09, 2007, 01:39:13 am »
The sleep command just sits there doing its thing....

Code
bash-3.1$ ps x -o tty,pid,command
TT         PID COMMAND
tty1      1514 -bash
tty1      1540 /bin/sh /usr/X11R6/bin/startx
tty1      1556 /usr/X11R6/bin/xinit /usr/X11R6/lib/X11/xinit/xinitrc -- -auth /h
tty1      1567 /bin/sh /usr/X11R6/lib/X11/xinit/xinitrc
tty1      1569 /bin/sh /opt/kde/bin/startkde
?         1597 kdeinit Running...                   
?         1600 dcopserver [kdeinit] --nosid         
?         1604 klauncher [kdeinit] --new-startup     
?         1606 kded [kdeinit] --new-startup         
tty1      1619 kwrapper ksmserver
?         1621 ksmserver [kdeinit]                   
?         1623 kwin [kdeinit] -session 108f363330000117208531500000062480000_117
?         1627 kdesktop [kdeinit]                   
?         1630 kicker [kdeinit]                     
?         1638 kaccess [kdeinit]                     
?         1642 superkaramba -session 108f363330000117285908400000027280029_11733
?         1644 superkaramba -session 108f363330000117290000100000036900010_11733
?         1645 superkaramba -session 108f363330000117290000300000036900011_11733
?         1694 konqueror [kdeinit] -session 108f36333000011733276760000007048003
?         4536 kompare -caption Kompare -icon kompare -miniicon kompare -o /home
?         8506 konsole [kdeinit] --ls               
pts/1     8507 -bash
?        15990 xchat
?        20325 /bin/sh /usr/local/apps/firefox/firefox
?        20328 /bin/sh /usr/local/apps/firefox/run-mozilla.sh /usr/local/apps/fi
?        20333 /usr/local/apps/firefox/firefox-bin
?        21972 konsole [kdeinit] --ls               
pts/3    21973 -bash
?        22093 konsole [kdeinit] --ls               
pts/4    22094 -bash
?        22316 xterm
pts/5    22318 bash
pts/5    22373 sleep 81234
?        22394 xterm
pts/6    22396 bash
pts/6    22459 ps x -o tty,pid,command
?        25985 konqueror [kdeinit] --silent         
?        27347 gaim
bash-3.1$

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #27 on: March 09, 2007, 01:46:08 am »
Ok, I'm gonna make some debugging output statements, then send debuggergdb.cpp back to ya. standby...

Maybe we got a wxWidgets error. What version of wxWidgets are you compiling with?

kramed

  • Guest
Re: Problem with debugger
« Reply #28 on: March 09, 2007, 01:49:26 am »
2.6.3 with Patch #2. I used the wiki as a guide. Im pretty sure wxGTK is installed fine, there were no errors.

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2813
Re: Problem with debugger
« Reply #29 on: March 09, 2007, 02:19:17 am »
Here are the last two routines in debuggergdb.cpp

please cut and paste them into your CB, run the console program and then give the "Debugger(debug)" output to me.

I've put two debugging statements in to try and identify the problem with the missing sleep parameter.

Code
// ----------------------------------------------------------------------------
int DebuggerGDB::RunNixConsole()
// ----------------------------------------------------------------------------
{
    // start the xterm and put the shell to sleep with -e sleep 80000
    // fetch the xterm tty so we can issue to gdb a "tty /dev/pts/#"
    // redirecting program stdin/stdout/stderr to the xterm console.

  #ifndef __WXMSW__
    wxString cmd;
    wxString title = wxT("Program Console");
    m_nConsolePid = 0;
    // for non-win platforms, use m_ConsoleTerm to run the console app
    wxString term = Manager::Get()->GetConfigManager(_T("app"))->Read(_T("/console_terminal"), DEFAULT_CONSOLE_TERM);
    //term.Replace(_T("$TITLE"), _T("'") + _T("*nixConsole") + _T("'"));
    term.Replace(_T("$TITLE"), _T("'") + title + _T("'"));
    cmd << term << _T(" ");
    cmd << wxT("sleep ");
    cmd << 80000 + ::wxGetProcessId(); //make a unique sleep command

    wxString sleepPid; sleepPid << 80000 + ::wxGetProcessId();
    DebugLog(wxString::Format(wxT("RunNixConsole.SleepPid_1 is[%s]"),sleepPid.c_str() ));
    sleepPid = wxString::Format(wxT("%d"),80000+ ::wxGetProcessId());
    DebugLog(wxString::Format(wxT("RunNixConsole.SleepPid_2 is[%s]"),sleepPid.c_str() ));

    Manager::Get()->GetMacrosManager()->ReplaceEnvVars(cmd);
    //Manager::Get()->GetMessageManager()->Log(m_PageIndex, _("Executing: %s"), cmd.c_str() );
    DebugLog(wxString::Format( _("Executing: %s"), cmd.c_str()) );
    //start xterm -e sleep {some unique # of seconds}
    m_nConsolePid = wxExecute(cmd, wxEXEC_ASYNC);
    if (m_nConsolePid <= 0) return -1;

    // Issue the PS command to get the /dev/tty device name
    // First, wait for the xterm to settle down, else PS won't see the sleep task
    Manager::Yield();
    ::wxSleep(1);
    m_ConsoleTty = GetConsoleTty(m_nConsolePid);
    if (not m_ConsoleTty.IsEmpty() )
    {   // show what we found as tty
        DebugLog(wxString::Format(wxT("GetConsoleTTY[%s]ConsolePid[%d]"),m_ConsoleTty.c_str(),m_nConsolePid));
        return m_nConsolePid;
    }
    // failed to find the console tty
    DebugLog( wxT("Console Execution error:failed to find console tty."));
    if (m_nConsolePid != 0)::wxKill(m_nConsolePid);
    m_nConsolePid = 0;
  #endif//ndef __WWXMSW__
    return -1;
}
// ----------------------------------------------------------------------------
wxString DebuggerGDB::GetConsoleTty(int ConsolePid)
// ----------------------------------------------------------------------------
{
    // execute the ps x -o command  and read PS output to get the /dev/tty field

unsigned long ConsPid = ConsolePid;
wxString psCmd;
wxArrayString psOutput;
wxArrayString psErrors;

psCmd << wxT("ps x -o tty,pid,command");
    DebugLog(wxString::Format( _("Executing: %s"), psCmd.c_str()) );
int result = wxExecute(psCmd, psOutput, psErrors, wxEXEC_SYNC);
psCmd.Clear();
if (result != 0)
{   psCmd << wxT("Result of ps x:") << result;
        DebugLog(wxString::Format( _("Execution Error:"), psCmd.c_str()) );
        return wxEmptyString;
}

    wxString ConsTtyStr;
    wxString ConsPidStr;
    ConsPidStr << ConsPid;
    //find task with our unique sleep time
    wxString uniqueSleepTimeStr;
    uniqueSleepTimeStr << wxT("sleep ") << 80000 + ::wxGetProcessId();
    // search the output of "ps pid" command
    int knt = psOutput.GetCount();
    for (int i=knt-1; i>-1; --i)
    {   psCmd = psOutput.Item(i);
        DebugLog(wxString::Format( _("PS result: %s"), psCmd.c_str()) );
        // find the pts/# or tty/# or whatever it's called
        // by seaching the output of "ps x -o tty,pid,command" command.
        // The output of ps looks like:
        // TT       PID   COMMAND
        // pts/0    13342 /bin/sh ./run.sh
        // pts/0    13343 /home/pecan/devel/trunk/src/devel/codeblocks
        // pts/0    13361 /usr/bin/gdb -nx -fullname -quiet -args ./conio
        // pts/0    13362 xterm -font -*-*-*-*-*-*-20-*-*-*-*-*-*-* -T Program Console -e sleep 93343
        // pts/2    13363 sleep 93343
        // ?        13365 /home/pecan/proj/conio/conio
        // pts/1    13370 ps x -o tty,pid,command

        if (psCmd.Contains(uniqueSleepTimeStr))
        do
        {   // check for correct "sleep" line
            if (psCmd.Contains(wxT("-T"))) break; //error;wrong sleep line.
            // found "sleep 93343" string, extract tty field
            ConsTtyStr = wxT("/dev/") + psCmd.BeforeFirst(' ');
            DebugLog(wxString::Format( _("TTY is[%s]"), ConsTtyStr.c_str()) );
            return ConsTtyStr;
        }while(0);//if do
    }//for

    knt = psErrors.GetCount();
    for (int i=0; i<knt; ++i)
        DebugLog(wxString::Format( _("PS Error:%s"), psErrors.Item(i).c_str()) );
    return wxEmptyString;
}


« Last Edit: March 09, 2007, 02:23:42 am by Pecan »