Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Christian Junker Newsgroups: de.comp.lang.python Subject: [Python-de] Tracing der Funktionsaufrufe in Python Date: Thu, 3 Nov 2016 11:57:18 +0100 Lines: 34 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 7M3bO+jCiAj5dy500cWUdgw3TRwvYX1FfLM8JMEB9jUQ== 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=Za/24hUH4Nz0L5Jq5+QGFzKplBPge748QlQ9+abWVig=; b=mKchjtTCfyZe5KOCfOCztbDzFzESDsa3mUqyBrP5uGhA7PWIG3fnGWdTW6tol9kDMb jNHfK7UxJ1UkaajU0C//cjWyut8XfE3/SCOfIEARqKZyfOEut1FQBCFVDoSJzKKOc+4h cb8DTdpljichvxR5EPlwHKKq7Kb3rWWO80+ZsSlXGwIgJpfPXuFKnzh9gwWHRKLhDWIl SxAVSfxzFela9pjhZZJrATNx2K1Qbcgr1xcpH9pugqPIceuQ84hNKSxXPEhjZvqakSn5 JiGzYRzJsEzYIb9P6c3rHrej8r1V7MBBOp/AFl8foslXjBfLzDzKVA3w5eHORd31rGCP bftg== 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=Za/24hUH4Nz0L5Jq5+QGFzKplBPge748QlQ9+abWVig=; b=dfZ2BUa7QCj/pgkdCDgMH5sYq57jwAXjwKSqnzWR7lWEJiusVwwBbeFPtqLVDnMOSe yxJ2wt9ZdAj3CyKMDXmsHc7fWzqAU6jOoe9/B+3UlIZN+eisy9ixRZXABvU1t8TvH2/N CVADwNBIUckefvLjJaCagQdx+1wMZ/2aaF2ZM9VA+XZa8WmY5c2QjpNvYjpZFyPrVjWV 1G0niAsoMzPM3IszvNIH+LgwCVCiDWAJ6xvKyaQIrQqpSJwraMDjMvCwrrH/2cmfDT8V 0KLydql+OZ0dImojm1jW7l2xEZEgGH3566nDPLMeY02xdsfxv19YhAy2npoId8ZAyWML SMgA== X-Gm-Message-State: ABUngvdqIB3XK/cKk0N+Hgjcett8kjBu/AlIgNjdVy6PUGDpxv1mvAKC6oTw11gbMuTq7nwYBBxbaqrbaPIc6w== X-Received: by 10.107.190.195 with SMTP id o186mr7990851iof.95.1478170638827; Thu, 03 Nov 2016 03:57:18 -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:4574 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 pdb, vmprof, dem Bauen CPythons mit dem debug flag und ltrace versucht. Sicherlich g=C3=A4be es die M=C3=B6glichkeit mittels gdb oder valgrind an diese Call Stacks heranzukommen, aber diese Tools sind nicht gerade leichtgewichtig. Kennt jemand m=C3=B6gliche Techniken / Module, die mir dies erm=C3=B6gliche= n, oder ist es wirklich nur durch Studium des Interpreter-Quellcodes m=C3=B6glich? --=20 Mit freundlichen Gr=C3=BC=C3=9Fen/best regards Christian Junker