我正在使用lldb作为OSX中的独立调试器.我正在尝试使用文本文件作为输入来调试C可执行文件.lldb文档指定了以下用于将stdin更改为给定文件的命令:
process launch -i <file>
Run Code Online (Sandbox Code Playgroud)
使用此命令,lldb似乎忽略指定的文件,而不是等待键盘输入.
这是预期的行为吗?如果是这样; 我需要做些什么来实际操作我想要的输入文件?
tl; dr:我如何让lldb模仿标准终端执行,如:
./executable < <file>
Run Code Online (Sandbox Code Playgroud) 我正在为python中的函数制作日志装饰器:
import logging
from typing import Callable
from functools import wraps
def function_logging(fn: Callable) -> Callable:
    fn_logger = logging.getLogger(fn.__module__ + '.' + fn.__name__)
    @wraps(fn)
    def wrapper(*args, **kwargs):
        fn_logger.info("Args: {}".format(args))
        fn_logger.info("Kwargs: {}".format(kwargs))
        result = fn(*args, **kwargs)
        fn_logger.info("Return: {}".format(result))
        return result
    return wrapper
Run Code Online (Sandbox Code Playgroud)
PyCharm的静态分析告诉我,我不能期望Callable具有属性__module__。到目前为止,我还没有遇到失败的情况。有谁知道在什么情况下可能会遇到Callable没有__module__属性的情况?
在 python 中,您可以通过属性向函数添加元数据,如 Python数据模型中所述:
函数对象还支持获取和设置任意属性,例如,可以使用这些属性将元数据附加到函数。
我有一个函数将另一个函数作为输入,期望它具有这样的可用元数据属性。当使用类型Callable注释此函数时,我无法强制存在此属性。因此,我想创建一个内置类的子类function,以确保元数据的存在,以便我可以在类型注释中使用。
只有一个小问题:除了运行时之外,我找不到对该类的引用。例如,builtins据我所知,该模块没有函数类。