Скрипт gdb python не работает в событии socketio - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь разрешить серверу socketio взаимодействовать с экземпляром gdb, но я не могу получить доступ к памяти или распечатать значение, а также некоторые другие вещи из события socketio, так как gdb будет либо cra sh, либо вызовите MemoryError, поскольку он не может получить доступ к памяти в gdb.parse_and_eval. Интересно, что он все еще мог разрешать символы, используя gdb.parse_and_eval.

Вот сервер и клиент, с которыми я тестировал:

#!/usr/bin/env python3
import gdb
import socketio

sio = socketio.Client()

@sio.event
def wat():
    print("wat called")
    gdb.execute('p "WAT"')
    print("wat done")

gdb.execute("b *main")
gdb.execute("r")
sio.connect('http://localhost:5000')
import socketio
import eventlet

# create a Socket.IO server
sio = socketio.Server()
app = socketio.WSGIApp(sio)

@sio.event
def connect(sid, environ):
    print("Connected: {}".format(sid))
    sio.emit("wat")

eventlet.wsgi.server(eventlet.listen(('127.0.0.1', 5000)), app)
━━┫ gdb -q ./main
Reading symbols from ./main...
(No debugging symbols found in ./main)
(gdb) source mvp-gdb-script.py 
Breakpoint 1 at 0x11a9

Breakpoint 1, 0x00005555555551a9 in main ()
wat called
[1]    77701 abort (core dumped)  gdb -q ./main
...