Windows WinDbg中的Python-Clik模块
我已经使用这个模块有一段时间了,我觉得它很棒。但是,我在WinDbg python插件中使用它时遇到了一些问题 我正在使用以下脚本,它在Linux中运行良好:Windows WinDbg中的Python-Clik模块,windows,windbg,pykd,Windows,Windbg,Pykd,我已经使用这个模块有一段时间了,我觉得它很棒。但是,我在WinDbg python插件中使用它时遇到了一些问题 我正在使用以下脚本,它在Linux中运行良好: import click @click.group() def shell(): pass @shell.command() @click.option('--name', help='Your name please') def hello(name): click.echo(name) if __name__ =
import click
@click.group()
def shell():
pass
@shell.command()
@click.option('--name', help='Your name please')
def hello(name):
click.echo(name)
if __name__ == "__main__":
shell()
下面可以看到脚本的成功调用(在Linux命令行中):
下面可以看到脚本调用失败(这在WinDbg插件中):
了解为什么会发生这种情况以及WinDbg插件不接受参数以便通过单击正确解析参数的原因。这是单击“功能”:
请参见单击\utils.py:
if PY2 and WIN and _initial_argv_hash == _hash_py_argv():
return _get_windows_argv()
return sys.argv[1:]
def _get_windows_argv():
argc = c_int(0)
argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc))
因此,单击获取参数不是从sys.args,而是从windbg real命令行
您可以轻松解决此问题:
if __name__ == "__main__":
import sys
shell(args=sys.argv[1:])
PyKd。你能检查一下是否有效吗?Python中的注释/装饰语法何时可用?这可能是Python 2/3版本的问题吗?我使用karmadbg调试您的脚本,大约需要5分钟,请欣赏:)
if PY2 and WIN and _initial_argv_hash == _hash_py_argv():
return _get_windows_argv()
return sys.argv[1:]
def _get_windows_argv():
argc = c_int(0)
argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc))
if __name__ == "__main__":
import sys
shell(args=sys.argv[1:])