mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-29 20:03:33 +08:00
[!] bug fixed: issue #7697 ( raw_input does not work )
git-svn-id: https://pykd.svn.codeplex.com/svn@57920 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
55040a78e3
commit
2599f9885f
@ -42,7 +42,19 @@ class WindbgGlobalSession
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
WindbgGlobalSession() {
|
WindbgGlobalSession() {
|
||||||
|
|
||||||
|
boost::python::import( "pykd" );
|
||||||
|
|
||||||
main = boost::python::import("__main__");
|
main = boost::python::import("__main__");
|
||||||
|
|
||||||
|
// ïåðåíàïðàâëåíèå ñòàíäàðòíûõ ïîòîêîâ ÂÂ
|
||||||
|
boost::python::object sys = boost::python::import( "sys");
|
||||||
|
|
||||||
|
dbgOut dout;
|
||||||
|
sys.attr("stdout") = boost::python::object( dout );
|
||||||
|
|
||||||
|
dbgIn din;
|
||||||
|
sys.attr("stdin") = boost::python::object( din );
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::python::object
|
boost::python::object
|
||||||
@ -217,11 +229,20 @@ py( PDEBUG_CLIENT4 client, PCSTR args)
|
|||||||
SetupDebugEngine( client, &ext );
|
SetupDebugEngine( client, &ext );
|
||||||
dbgExt = &ext;
|
dbgExt = &ext;
|
||||||
|
|
||||||
|
boost::python::import( "pykd" );
|
||||||
|
|
||||||
boost::python::object main = boost::python::import("__main__");
|
boost::python::object main = boost::python::import("__main__");
|
||||||
|
|
||||||
boost::python::object global(main.attr("__dict__"));
|
boost::python::object global(main.attr("__dict__"));
|
||||||
|
|
||||||
boost::python::object result;
|
// ïåðåíàïðàâëåíèå ñòàíäàðòíûõ ïîòîêîâ ÂÂ
|
||||||
|
boost::python::object sys = boost::python::import( "sys");
|
||||||
|
|
||||||
|
dbgOut dout;
|
||||||
|
sys.attr("stdout") = boost::python::object( dout );
|
||||||
|
|
||||||
|
dbgIn din;
|
||||||
|
sys.attr("stdin") = boost::python::object( din );
|
||||||
|
|
||||||
// ðàçáîð ïàðàìåòðîâ
|
// ðàçáîð ïàðàìåòðîâ
|
||||||
typedef boost::escaped_list_separator<char> char_separator_t;
|
typedef boost::escaped_list_separator<char> char_separator_t;
|
||||||
@ -275,6 +296,8 @@ py( PDEBUG_CLIENT4 client, PCSTR args)
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
boost::python::object result;
|
||||||
|
|
||||||
result = boost::python::exec_file( fullFileName.c_str(), global, global );
|
result = boost::python::exec_file( fullFileName.c_str(), global, global );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
46
pykd/dbginput.h
Normal file
46
pykd/dbginput.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "dbgprint.h"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class dbgOut {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
void
|
||||||
|
write( const std::string& str ) {
|
||||||
|
DbgPrint::dprint( str );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class dbgIn {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
std::string
|
||||||
|
readline() {
|
||||||
|
|
||||||
|
char str[100];
|
||||||
|
ULONG inputSize;
|
||||||
|
|
||||||
|
OutputReader outputReader( dbgExt->client );
|
||||||
|
|
||||||
|
dbgExt->control->Input( str, sizeof(str), &inputSize );
|
||||||
|
|
||||||
|
return std::string( str );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Reference in New Issue
Block a user