a41a8a74f0
Hphpd's Jump command has been fundamentally broken for a long time. It was originally implemented to run the byte code in a modified way which didn't make state changes, and wait for the destination offset to be reached. We lost the ability to do that long ago, and the implementation of this command has atrophied since. As it stands now, if you're lucky it might act like "run until", which is the opposite of what it is documented to do. I've removed the command entirely. Fixing it is a very large effort which we might consider some time in the future.
73 linhas
2.8 KiB
C++
73 linhas
2.8 KiB
C++
/*
|
|
+----------------------------------------------------------------------+
|
|
| HipHop for PHP |
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) 2010- Facebook, Inc. (http://www.facebook.com) |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 3.01 of the PHP license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available through the world-wide-web at the following url: |
|
|
| http://www.php.net/license/3_01.txt |
|
|
| If you did not receive a copy of the PHP license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@php.net so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
#ifndef incl_HPHP_EVAL_DEBUGGER_CMD_INTERRUPT_H_
|
|
#define incl_HPHP_EVAL_DEBUGGER_CMD_INTERRUPT_H_
|
|
|
|
#include <runtime/eval/debugger/debugger_command.h>
|
|
#include <util/process.h>
|
|
|
|
namespace HPHP { namespace Eval {
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
DECLARE_BOOST_TYPES(CmdInterrupt);
|
|
class CmdInterrupt : public DebuggerCommand {
|
|
public:
|
|
CmdInterrupt()
|
|
: DebuggerCommand(KindOfInterrupt),
|
|
m_interrupt(-1), m_threadId(0), m_site(nullptr) {}
|
|
|
|
CmdInterrupt(InterruptType interrupt, const char *program,
|
|
InterruptSite *site, const char *error)
|
|
: DebuggerCommand(KindOfInterrupt),
|
|
m_interrupt(interrupt), m_program(program ? program : ""),
|
|
m_site(site) {
|
|
m_threadId = (int64_t)Process::GetThreadId();
|
|
if (error) m_errorMsg = error;
|
|
}
|
|
|
|
int64_t getThreadId() const { return m_threadId;}
|
|
InterruptType getInterruptType() const { return (InterruptType)m_interrupt;}
|
|
std::string desc() const;
|
|
std::string error() const { return m_errorMsg;}
|
|
|
|
virtual bool onClient(DebuggerClient *client);
|
|
virtual void setClientOutput(DebuggerClient *client);
|
|
virtual bool onServer(DebuggerProxy *proxy);
|
|
|
|
virtual void sendImpl(DebuggerThriftBuffer &thrift);
|
|
virtual void recvImpl(DebuggerThriftBuffer &thrift);
|
|
|
|
bool shouldBreak(const BreakPointInfoPtrVec &bps);
|
|
std::string getFileLine() const;
|
|
|
|
InterruptSite *getSite() { return m_site;}
|
|
|
|
private:
|
|
int16_t m_interrupt;
|
|
std::string m_program; // informational only
|
|
std::string m_errorMsg; // informational only
|
|
int64_t m_threadId;
|
|
InterruptSite *m_site; // server side
|
|
BreakPointInfoPtr m_bpi; // client side
|
|
BreakPointInfoPtrVec m_matched;
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
}}
|
|
|
|
#endif // incl_HPHP_EVAL_DEBUGGER_CMD_INTERRUPT_H_
|