Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: "Diez B. Roggisch" Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Tracing der Funktionsaufrufe in Python Date: Thu, 3 Nov 2016 12:25:31 +0100 Lines: 61 Message-ID: References: <16232C6C-5DC8-484C-AE12-DE4197FE611C@web.de> Mime-Version: 1.0 (Mac OS X Mail 10.1 \(3251\)) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de 1Ug/zsO2vOA0+QJLx0/WYQe1kFdXevfIRA/Vv/R/Ru4w== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org In-Reply-To: X-Mailer: Apple Mail (2.3251) X-Provags-ID: V03:K0:+uCNaRD1o6SV/I3tmNFdrlGrxorm+dooM3bcfk9qK1VGe4x0akp 5lkkSDmkKZ+xWQN+BPXQleZ82Bfy53iwOgRuH0O1T4MUc+OJkT5nA0VSFpu909DDgoc+hEL HKw53iA/D/3E1OLxC/MVMXg2wcja+/X769LxnrkIC1myO0CxW5rf5DGkCLBIH3+12fs3ZoJ dYs6E9B9GCjzSXavgH02g== X-UI-Out-Filterresults: notjunk:1;V01:K0:wbH/mdyywEg=:8sbjmKKeUuvqwvylxAf5qw AtntXWJ24gOYGzTymnj/isKYtEc5ZU+GwcKUJu/A+GZeoVbwp2CuZBHhXlKZ++R9OtIp6LkxM /DydQvalcmH5qOdvQI27PocKEWq7aiLr6WgZgxXwy2xMHKNWihFslCtjIZSU6pwlWGRJlpTUQ MbcVTwP6yR62mG2/wOF4gOUUNQUU2/PzKWsbkEdbUaM3NJgzrBypdWG1egrEepGqlwusOuqYb eHxTFZT+TGFqKXDU+JAlMmWHNYSaJ463K+I0Vw4E1fSTTwxlcfKBH7IRBWBwKGbTynR28qSvw jRTLlaGxPCofCXuIN/wt9R7AIevFY9ExlZKi1AvjlUUsTZbI5hamO3tMg6b7+M0dhKe/y37Sq DmGnqN67KXJK7q+bD1FVukkrKQvpNTWZnDCGV55maPM1KGpwx0brrJClofxD4e+XrRPUePbRE ZdwW8LdOmszktR1lbkbSSEmsh1b/Mdowf24O4buj0o0KjSk6PbRH9hnmkJaQi2jHKcO2+e2KE Ju1h8+mFJFXBJk85rY6JNSLxyQDQkA/38jHA1j1cVjkoGtBemkdOD1RWiscI3CAINyYWxvSad 2ZoHX672nxrNrCm8Q7dlCNc9mJ4RWfZKRAEh1Wz1Kp5sYzBlSYhC4XwTQBfU5unZMaqPUNrFs 4KKBysE/aKM3X8JZU6MBbv2COSCXw1OS8NnJYU3Hx07lWKDfo5CImBaQgPSACVS28vISNWo6B hJv9ePsEqJgJyO3cEI8r1oRTlu719LhoXN6rutN9AeIv/nUslFFCqPLOQ5ckKx+55JewBVTPq 70cdqgu 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: <16232C6C-5DC8-484C-AE12-DE4197FE611C@web.de> X-Mailman-Original-References: Xref: csiph.com de.comp.lang.python:4576 Hallo, Ich habe mal aus Spass fuer den LLDB einen Stacktrace Analyzer gebaut, = mit dem man im LLDB den Python-Stacktrace bekommt.=20 Das ist also quasi die Kombination aus lldb + pdb. In Grenzen. Aber fuer = ein solches Tracing koennte es funktionieren. Ob es einfacher ist als das haendische rausfummeln musst du entscheiden. = Und wie immer bei solchen Problemen stellt sich die Frage nach dem = =E2=80=9Cwarum=E2=80=9D - wenn du das beleuchten wuerdest, koennte man = ggf. alternative Herangehensweisen vorschlagen. Diez > On 3 Nov 2016, at 11:57, Christian Junker = wrote: >=20 > Hallo zusammen, >=20 > 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. >=20 > 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. >=20 > 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. >=20 > Kennt jemand m=C3=B6gliche Techniken / Module, die mir dies = erm=C3=B6glichen, > oder ist es wirklich nur durch Studium des Interpreter-Quellcodes > m=C3=B6glich? >=20 > --=20 > Mit freundlichen Gr=C3=BC=C3=9Fen/best regards > Christian Junker > _______________________________________________ > python-de maillist - python-de@python.org > https://mail.python.org/mailman/listinfo/python-de >=20