首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置VScode来调试GG多线程应用程序(如winpdb中的)?

如何配置VScode来调试GG多线程应用程序(如winpdb中的)?
EN

Stack Overflow用户
提问于 2022-06-23 10:52:32
回答 1查看 62关注 0票数 2

我如何配置VScode来像在winpdb中那样调试这个多线程应用程序(我们可以在调用堆栈中看到不同的客户端线程)?

是否可以看到我的主线程执行(我们在线程中,变量,.),以及线程执行(同样的事情在同一时间,并且独立地使用调试器控制台执行线程)?

代码语言:javascript
复制
from socket import *
from fib import fib
from threading import Thread
from concurrent.futures import ProcessPoolExecutor as Pool

pool = Pool(4)

def fib_server(address):
    sock = socket(AF_INET, SOCK_STREAM)
    sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    sock.bind(address)
    sock.listen(5)
    while True:
        client, addr = sock.accept()
        print("Connection", addr)
        Thread(target=fib_handler, args=(client,), daemon=True).start()

def fib_handler(client):
    while True:
        req = client.recv(100)
        if not req:
            break
        n = int(req)
        future = pool.submit(fib, n)
        result = future.result()
        resp = str(result).encode('ascii') + b'\n'
        client.send(resp)
    print("Closed")

fib_server(('',25000))
EN

回答 1

Stack Overflow用户

发布于 2022-06-24 02:19:58

我们可以使用断点进行多线程调试.

我用一个简单的例子向您展示了如何做到这一点:

代码语言:javascript
复制
from threading import Thread
from multiprocessing import Process
import time


def print_num(num):
    while 1:
        time.sleep(1)
        print(num)


def multithread_func():
    num = 2
    a = [
        num,
    ]
    thread = Thread(target=print_num, args=(a,))
    thread.start()
    while 1:
        time.sleep(1)
        a[0] = a[0] + 1


def another_process(num):
    while 1:
        time.sleep(1)
        print(f"I'm the second, num is {num}.")


if __name__ == "__main__":
    from multiprocessing import Process

    process = [
        Process(target=multithread_func),
        Process(target=another_process, args=(2,)),
    ]
    [p.start() for p in process]
    [p.join() for p in process]

我们可以在time.sleep (1)之前添加断点:

然后,在使用调试函数时,可以查看每个线程的状态,包括变量和左侧控制线程的按钮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72728979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档