Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Christian Junker Newsgroups: de.comp.lang.python Subject: [Python-de] Tracing von Funktionsaufrufen Date: Thu, 3 Nov 2016 12:14:44 +0100 Lines: 36 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de TsXm4Y7N7hM2k7haIGmQMw+YPaoWpxdCoqElnJOv6hpQ== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=odZY5Mb1tRtgfUxo3W2K3khwIkK7PlTUXinQcG5mpZg=; b=Gm/5GOBV2WLV75h7sawNPfRFX/mrSsvh/fVeZOVNNYxdeuZ6lWY4f76q3Lx+QLwsUz Q8PPU1Pq4I6VwpeC/GoSqQ6/KtcwgGNln2pyIvCjNnaWezVhMPB8pc1xqaqFRUzEi4y1 BVXMAUzoeEOayawkodeVAVEwwCiNRj0Rilp288QHoZ7Nw/P2SpF1jgjqTr58nfr/keKK xCCDkJA8fHb6i8w4kBDCESjjrra8H0Wc0bV0PHo+Osg8E4jMdmMhP0DRdAkQk2hJUTtk og4hzMSOB6r4587gZfZrXZIXtTEKEZn8Qw3FgS4mSRNFQcz3f3VgNfZCGDA5r/+bOZQX nDGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=odZY5Mb1tRtgfUxo3W2K3khwIkK7PlTUXinQcG5mpZg=; b=JCbj4lDzjsTmd+h4TFUMqZYwz0Iz67G/oLC6JPzjds/BJfb7BocvUgXlY2fOp0T6wE cjUM0HyWnHeU5KAMel4cEUFhGJ9qhdnJ9ZWZIjzXdr9Dh4T8ckomH+Zr7HXni/2f9pOL F1QCB+G75lBzhc7S/d4m41bqBQqYF88dkrv8LVaGDLgejtp3mDy2xoY6gWgJrVg9mQfO k2RCZWgYO/sqDJpUxxYKZfmtcjEb0rSsg47OI2aQUk4r1qV/5Yr78J4Xqz6o9jNpeN3g yMr1ki8fxM3jDHUJLCir39KZsjYW4NEWlZ2Pawc/+uHM8ed/ztS7andb9DxEpaqCfQKn io4w== X-Gm-Message-State: ABUngvd3rw6mnpqhPAKjYhRTdjq7Ggj3RsegF36w+Dx9nCZiEyL2Ay5eA+12SCdYpJ16SkmnF3Esk4qBoWIzKQ== X-Received: by 10.107.35.11 with SMTP id j11mr8210711ioj.68.1478171684914; Thu, 03 Nov 2016 04:14:44 -0700 (PDT) X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: Xref: csiph.com de.comp.lang.python:4575 Hallo zusammen, ich interessiere mich daf=C3=BCr, welche Python Funktion/Methode welche C Funktionen im Kern des CPython Interpreters aufruft (voller Call Stack) und zus=C3=A4tzlich auch f=C3=BCr das Profiling dieser C Funktionen. Leider konnte ich bisher f=C3=BCr diesen Zweck kein Modul finden. Nehmen wir das Beispiel der print Funktion in Python3. Letztlich ruft diese, wenn ich den Source Code CPythons richtig verstehe die Funktion builtin_print (definiert in Python/bltinmodule.c) auf. Diese Funktion wiederum nutzt Funktionen aus der Python C API, wie bspw. PyArg_ParseTupleAndKeywords zum Auslesen der =C3=BCbergebenen Parameter, oder PyFile_WriteObject zum Schreiben des Inputs in den entsprechenden Outputstream. PyFile_WriteObject wiederum holt sich das Attribut "write" des Outputstream Objekts und ruft dann PyEval_CallObject darauf auf, usw. Ein Modul, das mir diesen Function Stack transparent machen plus ein bis auf die C Ebene aufgeschl=C3=BCsseltes Profiling anbieten w=C3=BCrde, w= =C3=A4re eine feine Sache. Bisher habe ich mich ohne Erfolg an python -d, pdb, vmprof und ltrace versucht. Sicherlich g=C3=A4be es die M=C3=B6glichkeit mi= ttels gdb oder valgrind an diese Call Stacks heranzukommen, aber diese Tools sind nicht gerade leichtgewichtig und auch nicht platform=C3=BCbergreifend nutzbar. Kennt jemand m=C3=B6gliche Techniken / Module, die mir dies erm=C3=B6gliche= n, oder ist es wirklich nur durch Studium des Interpreter-Quellcodes und den schwergewichtigen externen Tools (die nat=C3=BCrlich nicht auf dem Zielsystem zur Verf=C3=BCgung stehen) m=C3=B6glich? --=20 Mit freundlichen Gr=C3=BC=C3=9Fen/best regards Christian Junker