mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
136 lines
3.0 KiB
C++
136 lines
3.0 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#include "dbgobj.h"
|
|
|
|
namespace pykd {
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
|
|
std::string
|
|
dbgCommand( const std::wstring &command );
|
|
|
|
ULONG64
|
|
evaluate( const std::wstring &expression );
|
|
|
|
void
|
|
breakin();
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
|
|
class DbgExtension : private DbgObject {
|
|
|
|
public:
|
|
|
|
DbgExtension( IDebugClient4 *client, const std::wstring &extPath );
|
|
|
|
virtual ~DbgExtension();
|
|
|
|
std::string
|
|
call( const std::wstring &command, const std::wstring ¶m );
|
|
|
|
private:
|
|
|
|
ULONG64 m_handle;
|
|
|
|
};
|
|
|
|
typedef boost::shared_ptr<DbgExtension> DbgExtensionPtr;
|
|
|
|
DbgExtensionPtr
|
|
loadExtension( const std::wstring &extPath );
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}; // end of namespace pykd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#include <string>
|
|
//#include <map>
|
|
//#include "pyaux.h"
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
//std::string
|
|
//dbgCommand( const std::wstring &command );
|
|
//
|
|
//template <ULONG status>
|
|
//void
|
|
//setExecutionStatus()
|
|
//{
|
|
// HRESULT hres;
|
|
//
|
|
// hres = dbgExt->control->SetExecutionStatus( status );
|
|
//
|
|
// if ( FAILED( hres ) )
|
|
// throw DbgException( "IDebugControl::SetExecutionStatus failed" );
|
|
//
|
|
// ULONG currentStatus;
|
|
//
|
|
// do {
|
|
//
|
|
// {
|
|
// PyThread_StateRestore pyThreadRestore;
|
|
// hres = dbgExt->control->WaitForEvent( 0, INFINITE );
|
|
// }
|
|
//
|
|
// if ( FAILED( hres ) )
|
|
// {
|
|
// if (E_UNEXPECTED == hres)
|
|
// throw WaitEventException();
|
|
//
|
|
// throw DbgException( "IDebugControl::WaitForEvent failed" );
|
|
// }
|
|
//
|
|
// hres = dbgExt->control->GetExecutionStatus( ¤tStatus );
|
|
//
|
|
// if ( FAILED( hres ) )
|
|
// throw DbgException( "IDebugControl::GetExecutionStatus failed" );
|
|
//
|
|
// } while( currentStatus != DEBUG_STATUS_BREAK && currentStatus != DEBUG_STATUS_NO_DEBUGGEE );
|
|
//
|
|
//}
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
//class dbgExtensionClass {
|
|
//
|
|
//public:
|
|
//
|
|
// dbgExtensionClass() :
|
|
// m_handle( NULL )
|
|
// {}
|
|
//
|
|
// dbgExtensionClass( const char* path );
|
|
//
|
|
// ~dbgExtensionClass();
|
|
//
|
|
// std::string
|
|
// call( const std::string &command, const std::string param );
|
|
//
|
|
// std::string
|
|
// print() const;
|
|
//
|
|
//private:
|
|
//
|
|
// ULONG64 m_handle;
|
|
// std::string m_path;
|
|
//};
|
|
//
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
//ULONG64
|
|
//evaluate( const std::string &expression );
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
//void
|
|
//breakin();
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////
|