Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4574

[Python-de] Tracing der Funktionsaufrufe in Python

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Christian Junker <christianjunker@gmail.com>
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 <mailman.13.1478171117.7975.python-de@python.org> (permalink)
References <CADAgN38bg78-K5h3UaWi2iTLYboXHK_50r1dmeGwH5JTXbGBiA@mail.gmail.com>
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 <christianjunker@gmail.com>
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 <python-de.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-de>, <mailto:python-de-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-de/>
List-Post <mailto:python-de@python.org>
List-Help <mailto:python-de-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-de>, <mailto:python-de-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID <CADAgN38bg78-K5h3UaWi2iTLYboXHK_50r1dmeGwH5JTXbGBiA@mail.gmail.com>
Xref csiph.com de.comp.lang.python:4574

Show key headers only | View raw


Hallo zusammen,

ich interessiere mich dafür, welche Python Funktion/Methode welche C
Funktionen im Kern des CPython Interpreters aufruft (voller Call
Stack) und zusätzlich auch für das Profiling dieser C Funktionen.
Leider konnte ich bisher für 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 übergebenen 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üsseltes Profiling anbieten würde, wäre
eine feine Sache.
Bisher habe ich mich ohne Erfolg an pdb, vmprof, dem Bauen CPythons
mit dem debug flag und ltrace versucht. Sicherlich gäbe es die
Möglichkeit mittels gdb oder valgrind an diese Call Stacks
heranzukommen, aber diese Tools sind nicht gerade leichtgewichtig.

Kennt jemand mögliche Techniken / Module, die mir dies ermöglichen,
oder ist es wirklich nur durch Studium des Interpreter-Quellcodes
möglich?

-- 
Mit freundlichen Grüßen/best regards
Christian Junker

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

[Python-de] Tracing der Funktionsaufrufe in Python Christian Junker <christianjunker@gmail.com> - 2016-11-03 11:57 +0100

csiph-web