-
Notifications
You must be signed in to change notification settings - Fork 88
Description
Hi, thanks for your plugin; it helped me. I had two small issues with using it, both of which I fixed (with one line of code apiece).
The plugin advertises Python 2.x support. In the current plugin.py, you put import asyncio to apparently get around some issue with tornado. This is not available on Python 2.x (I know, I need to update). I simply commented out this line. You might want to guard it by a version check for 3.0 or above, similar to what you do elsewhere throughout that file. (Edit: I see that PR #13 already addresses this.)
Secondly, in socket_handler.py, I experienced the issue where debugpy attempted to spawn the current process -- that is, the IDA executable -- when listening for connections. I had debug output like:
I+00021.467: debugpy.listen() spawning adapter: [
"C:\\Program Files\\IDA Pro 7.6\\ida64.exe",
"C:\\Users\\Dev\\AppData\\Roaming\\Python\\Python27\\site-packages\\debugpy\\adapter",
That first line is supposed to be the path to the Python interpreter, e.g., settings.PYTHON. After reading through debugpy, I can see that it consults sys.executable to obtain the path to the process that should be spawned. Presumably, this is why you modify this variable in your setup_patches function. However, the debugpy module gets loaded before setup_patches is called, which means that this technique does not work.
It turns out that you can instruct debugpy directly as to which executable to spawn. In socket_handler.py, I added one line of code before the call to listen:
debugpy.configure({'python': settings.PYTHON})
After both patches -- and installing the official Python extension for VSCode, as well as learning about the command pallette -- everything worked for me.