Do not report start, end and psp breakpoints as unbound when connected to a sandbox.

break start/end/psp currently always report themselves as unbound. If the client is connected to a sanbox, these should instead be treated as bound. Also, break clear all currently removes breakpoints without running their destructors in the right order, which causes the break point counter to not reset to 1.
Esse commit está contido em:
Herman Venter
2013-07-15 11:01:27 -07:00
commit de Sara Golemon
commit 10f93d4828
5 arquivos alterados com 46 adições e 17 exclusões
+17 -3
Ver Arquivo
@@ -202,8 +202,14 @@ void CmdBreak::processList(DebuggerClient &client) {
updateServer(client);
for (int i = 0; i < (int)m_breakpoints->size(); i++) {
BreakPointInfoPtr bpi = m_breakpoints->at(i);
const char* boundStr =
bpi->m_bindState == BreakPointInfo::Unknown ? " (unbound)" : "";
bool bound = bpi->m_bindState != BreakPointInfo::Unknown;
if (!bound && !client.isLocal() &&
(bpi->m_interruptType == RequestStarted ||
bpi->m_interruptType == RequestEnded ||
bpi->m_interruptType == PSPEnded)) {
bound = true;
}
const char* boundStr = bound ? "" : " (unbound)";
client.print(" %d\t%s %s%s", bpi->index(), bpi->state(true).c_str(),
bpi->desc().c_str(), boundStr);
}
@@ -276,7 +282,9 @@ void CmdBreak::processStatusChange(DebuggerClient &client) {
if (client.arg(2, "all")) {
if (hasClearArg(client)) {
m_breakpoints->clear();
while (m_breakpoints->size() > 0) {
m_breakpoints->erase(m_breakpoints->end());
}
updateServer(client);
client.info("All breakpoints are cleared.");
return;
@@ -411,6 +419,12 @@ void ReportBreakpointBindState(DebuggerClient &client, BreakPointInfoPtr bpi) {
} else if (!bpi->getExceptionClass().empty()) {
client.info("But note that class %s has yet been loaded.",
bpi->getExceptionClass().c_str());
} else if (bpi->m_interruptType == RequestStarted ||
bpi->m_interruptType == RequestEnded ||
bpi->m_interruptType == PSPEnded) {
if (client.isLocal()) {
client.info("But wont break until connected to a server.");
}
} else {
client.info("But wont break until file %s has been loaded.",
bpi->m_file.c_str());
+1 -1
Ver Arquivo
@@ -158,7 +158,7 @@ function break9($c) {
function break10($c) {
$o = $c->processCmd('break', array(':fb:my:thing::doIt()'));
VS($o['text'], "Breakpoint 4 set upon entering xhp_fb__my__thing::doIt()\n");
VS($o['text'], "Breakpoint 1 set upon entering xhp_fb__my__thing::doIt()\n");
VS($o['values'][0]['func'], 'doIt');
VS($o['values'][0]['class'], 'xhp_fb__my__thing');
VS($o['values'][0]['namespace'], '');
+21 -9
Ver Arquivo
@@ -18,8 +18,20 @@ Breakpoint 1 reached at foo() on line 7 of %s/break1.php
variable
$x = "test_break1"
$y = "test_break1_suffix"
break start
Breakpoint 2 set start of request
But wont break until connected to a server.
break end
Breakpoint 3 set end of request or start of psp
But wont break until connected to a server.
break psp
Breakpoint 4 set end of psp
But wont break until connected to a server.
break list
1 ALWAYS on line 7 of break1.php
2 ALWAYS start of request (unbound)
3 ALWAYS end of request or start of psp (unbound)
4 ALWAYS end of psp (unbound)
break clear all
All breakpoints are cleared.
continue
@@ -143,16 +155,16 @@ continue
pubObj:yes sir
break derived::callPubObj=>cls::pubObj()
Breakpoint 2 set upon entering cls::pubObj() called by derived::callPubObj()
Breakpoint 1 set upon entering cls::pubObj() called by derived::callPubObj()
break list
2 ALWAYS upon entering cls::pubObj() called by derived::callPubObj()
1 ALWAYS upon entering cls::pubObj() called by derived::callPubObj()
@ $break8 = new derived();
@ $break8->pubObj('no')
pubObj:no
@ $break8->callPubObj('yes')
Breakpoint 2 reached at cls::pubObj() on line 12 of %s/break1.php
Breakpoint 1 reached at cls::pubObj() on line 12 of %s/break1.php
11 public function pubObj($x) {
12 error_log("pubObj:".$x);
13 }
@@ -163,16 +175,16 @@ continue
pubObj:yes
break derived::callCallPubObj=>derived::callPubObj=>cls::pubObj()
Breakpoint 2 set upon entering cls::pubObj() called by derived::callPubObj() called by derived::callCallPubObj()
Breakpoint 1 set upon entering cls::pubObj() called by derived::callPubObj() called by derived::callCallPubObj()
break list
2 ALWAYS upon entering cls::pubObj() called by derived::callPubObj() called by derived::callCallPubObj()
1 ALWAYS upon entering cls::pubObj() called by derived::callPubObj() called by derived::callCallPubObj()
@ $break9 = new derived();
@ $break9->callPubObj('no')
pubObj:no
@ $break9->callCallPubObj('yes')
Breakpoint 2 reached at cls::pubObj() on line 12 of %s/break1.php
Breakpoint 1 reached at cls::pubObj() on line 12 of %s/break1.php
11 public function pubObj($x) {
12 error_log("pubObj:".$x);
13 }
@@ -183,16 +195,16 @@ continue
pubObj:yes
break derived::callCallPubObj=>cls::pubObj()
Breakpoint 2 set upon entering cls::pubObj() called by derived::callCallPubObj()
Breakpoint 1 set upon entering cls::pubObj() called by derived::callCallPubObj()
break list
2 ALWAYS upon entering cls::pubObj() called by derived::callCallPubObj()
1 ALWAYS upon entering cls::pubObj() called by derived::callCallPubObj()
@ $break10 = new derived();
@ $break10->callPubObj('no')
pubObj:no
@ $break10->callCallPubObj('yes')
Breakpoint 2 reached at cls::pubObj() on line 12 of %s/break1.php
Breakpoint 1 reached at cls::pubObj() on line 12 of %s/break1.php
11 public function pubObj($x) {
12 error_log("pubObj:".$x);
13 }
+3
Ver Arquivo
@@ -4,6 +4,9 @@ break break1.php:77
break list
@ foo('test_break1')
variable
break start
break end
break psp
break list
break clear all
continue
+4 -4
Ver Arquivo
@@ -151,12 +151,12 @@ object(C1)#3 (1) {
}
break flow2.php:26
Breakpoint 2 set on line 26 of flow2.php
Breakpoint 1 set on line 26 of flow2.php
@test(3)
Constructor
Finished in genFoo
Constructor
Breakpoint 2 reached at C1::__destruct() on line 26 of %s/flow2.php
Breakpoint 1 reached at C1::__destruct() on line 26 of %s/flow2.php
25 public function __destruct() {
26 error_log('Destructor');
27 }
@@ -170,14 +170,14 @@ Break at foo() on line 44 of %s/flow2.php
continue
Constructor
Breakpoint 2 reached at C1::__destruct() on line 26 of %s/flow2.php
Breakpoint 1 reached at C1::__destruct() on line 26 of %s/flow2.php
25 public function __destruct() {
26 error_log('Destructor');
27 }
out
Destructor
Breakpoint 2 reached at C1::__destruct() on line 26 of %s/flow2.php
Breakpoint 1 reached at C1::__destruct() on line 26 of %s/flow2.php
25 public function __destruct() {
26 error_log('Destructor');
27 }