From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70094.outbound.protection.outlook.com [40.107.7.94]) by sourceware.org (Postfix) with ESMTPS id 7C2493858D28 for ; Wed, 3 Nov 2021 20:07:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7C2493858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=fit.cvut.cz Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=fit.cvut.cz ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h9e0wr6PXJBilIYr5cHcJSniNtQnDe7NKPptPAm9Qm0zlB85d9pexbdLs4qEybYmRA5RAo15wfWjX0LUVCou2fC5DiwAJcJ20hamo/znMsDZ+aOBAEzcyMAd9irVrkEu+pcSd+j6uBhomvEAjQMMIDzF21rM5en6yVuqeR9su5VBtSi4GA8Aw7+DYur41pQQEmU+n9SI7Pw+NJ8hDBgr0Z9WlkdXfRHpIpBFRlwXm3iM6hQqaCbztT7q7lMefT8fnh3lWmV8/ZoKb2PeBxG+xqCz6+wKD1iIZB6Vb2ptqMgLZDeWdEswAu4Qs+CV+6maOtcgLXunhnrvL+2E8m9jWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=318XpWPPUHNvLQe0ZqUp3raVtDqKRsi25K788cFaK2o=; b=WMwm0UWzRCZu4igpG5PHpK0xpdqJtGSFsSFKCC/uiOhUJHTMds85a1mAdDAdS8ejpQXEeldU6WNB07z+x49EfJpd+em2OE0LJrzXUPFua3fMSbtQ9azRD5K6i9Q7LyZw+z9RgZCKp9/9Ga/mJLK81bkvPitrj3BzutvCPMmIvD177OHxgWwdT+jYMHD5YzoWsidg1VURV1TUcbvikZ4wPNU7jBnwUZ98szPMmBOqsq7FeCRyKJBEkiGhWkv1x0UEj7c7Ibv2JZxOXH3psJKDwGu2bDOzlo1QDZea+ZotGfzMZtnLREV8Era2zuMVzpk9o0vTQZy40ovNkmHhG0nqmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fit.cvut.cz; dmarc=pass action=none header.from=fit.cvut.cz; dkim=pass header.d=fit.cvut.cz; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=campuscvut.onmicrosoft.com; s=selector2-campuscvut-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=318XpWPPUHNvLQe0ZqUp3raVtDqKRsi25K788cFaK2o=; b=SuuQwICfd1hubGkxo1iRSRxkZ5JFZ7VohA2uBbSY2v6RGlbJHbx7T8+sFrK8pC/oi6SFKN1MgcrNsK2SFheE89DwadmMBzLjaTjbJ0byfsM2nIv/+L7HXGOkTYUzb3+KRn1rgb8i1e6Yhg8fS4hsrL1uF/2+14H8Liwgy90lQV4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fit.cvut.cz; Received: from VI1PR06MB4848.eurprd06.prod.outlook.com (2603:10a6:803:a2::28) by VI1PR0602MB3840.eurprd06.prod.outlook.com (2603:10a6:803:26::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.17; Wed, 3 Nov 2021 20:07:45 +0000 Received: from VI1PR06MB4848.eurprd06.prod.outlook.com ([fe80::e5ba:a10e:2e73:61a2]) by VI1PR06MB4848.eurprd06.prod.outlook.com ([fe80::e5ba:a10e:2e73:61a2%7]) with mapi id 15.20.4649.020; Wed, 3 Nov 2021 20:07:44 +0000 Message-ID: <6c506574eb7c0464d70421e4ec23c499b5c6a41e.camel@fit.cvut.cz> Subject: Re: How to get the full source location of a frame via python From: Jan Vrany To: Simon Sobisch , gdb@sourceware.org Date: Wed, 03 Nov 2021 20:07:42 +0000 In-Reply-To: References: <60c53fa8bf160533a2eddf1da280eb50c7461a6a.camel@fit.cvut.cz> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.3-1 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P123CA0233.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a6::22) To VI1PR06MB4848.eurprd06.prod.outlook.com (2603:10a6:803:a2::28) MIME-Version: 1.0 Received: from [IPv6:2a02:c7d:d66f:b100:ca15:9799:3447:7ec3] (2a02:c7d:d66f:b100:ca15:9799:3447:7ec3) by LO4P123CA0233.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a6::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.10 via Frontend Transport; Wed, 3 Nov 2021 20:07:44 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d7244206-075c-4e25-b0d2-08d99f05994d X-MS-TrafficTypeDiagnostic: VI1PR0602MB3840: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uhwi8fMq8AR6SXeCFSPBzbuGF95xfBYH5DGqeEt8ydF6AlmgmpJyaikjR7Z8UBvYBLD/zxmjpwGYNhW1yiVjnyW42syisRYTot8nlUd2u8T2H5RzzxwBXkpaGMBRoOorRn4/Yjbf0RC/7ptpTgQUoFUaTBvkhxiHMFFbrar/u0q3S+CgGQuPlGCcpXD1uWGzccRvBE0+wVL/4C8IlvJBZ6AQfiqZ3LfWEFSzzyMEMOq4RLJ7RDrvUQ8IxjxEDtdYFFxqcHAAgbcxI1vya1RJh2Xs98Fi54imP7+smAgHMHCaogmhXKrPtxOIPoT90tueBMIYOZ4KdmDxI9VrM00EfDB1BJ6VmCLZTIgbUfve+jgVpuU/qa9xb2tJ6ojJCZaKYuqQs2UMZBnMYDBtz42jDQweTv4WXjnV1+0PUxmlWJsdmUED1nA+I2k92dMjU72b37nC0EvQVeoBZbAKaBKW5zaDOs5oWeCNB/n4HZMcf1BZr2EOScplGN9FiVflRaJ+HUVu/Fw4yMhKOQwmkgQr/qjop6tjy/jK0MGZrENq90L0ft0pFTMRA6eNhmOSZxF4a/1Emw2j7jfXqmJf23jg9jnWfzGH3ULwqdPc31QQ/IB/3BrTv1QoU4F76LbWU5uPPRvzF//eGB09Gbj91+hy3zeEZZ3B7n5b+/qv4yDXHdVL/ASR/b7/wyKMKslx6UzOtgx56m8iee57cgrDo/BroA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR06MB4848.eurprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(366004)(136003)(396003)(346002)(39850400004)(6486002)(38100700002)(2616005)(5660300002)(52116002)(44832011)(508600001)(186003)(2906002)(66476007)(66556008)(8936002)(8676002)(86362001)(786003)(316002)(66946007)(403724002)(15583001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WEpsYVdOQUNNSExVQk5aQUVpN0czZDlkd0U0RHI3YVliai9MUThDYUNaU1E4?= =?utf-8?B?SVFxWVhxdUQ4TnVnNndKR1NUaVRmcWVyRzBsVDRuQWNTb0t4WG0rMDZwb0Jz?= =?utf-8?B?MDRyQ2w5UTR0NEc1c3ZYR1NvYkZJWTV3dFc3OHdjNlNXWXl5Y0lIaHVPZHlN?= =?utf-8?B?OTlXQit6S0xzWlVMT3lFWndMcXhXV05NWEdHUzZFODY5T24wTFJMR1NtcGFG?= =?utf-8?B?ZmtiR1FmTGdhTjVJeFhTUmJKR1lwQ3MyYUpORXB3cVp2VnBXQUZVNkZOWUda?= =?utf-8?B?WGRaZHBOTzN1Wm9PVFRFMXhyY3NjOUlSNHBDRW82d1JMeC9WZTZMS2FYeS8v?= =?utf-8?B?S0RiZ0J0VCtTZHl4OCtBbE44MUp3bnljNXVNdU9lTDlqemtTZDlLc3Z3U2R4?= =?utf-8?B?Y0ZPNXlsdXhCWWRVODVOSERLaUVMUUV1SVpmTk4ySnR3R1RlNkVkdWQ4aHJ2?= =?utf-8?B?bmFINjZQUnprUGJwYTFhcmwyZnU5NjNsQTIvYlZCZHpIVjNlQ1ZrTWpwRWkv?= =?utf-8?B?WFYyWFRhdUNvRnYvMmhaVlZqUTkzU3dOaWJFbVFXNU83QzV1THhlTDZ2eWc1?= =?utf-8?B?QW53MjlTaVZWUWMxUXJETUJmYWRRdzhiVjh3RUFTU3ZuOFc0NUk1eE9ITWNU?= =?utf-8?B?TDZJYm5hK1JSNHd6VitsYS8xVHkvZ1d6OEhUUzBsQXdWVWZFdkVxa1JVblRh?= =?utf-8?B?MXpZWjVMcVpsajVZcDBzdXBhU3MwNmNtOUFuZUZycUU0cTFRanNTWVVVTTJD?= =?utf-8?B?dUFoaU10V1V0OFBSQk5TSFZSR3VNaUpCeE8xcDBqaEpYMGpIZ3YzbWxSRm8r?= =?utf-8?B?ZHE5VG81NDd1R0hRTnZjV1hBMG1sU1lNTy9meHVweTB1cUdYcC9sU3QwMGF3?= =?utf-8?B?OTR1cDZhbVAyblZPK3dLZDV4bFhKbFRBV0NKNmJVRnZJZmlLWGl3R1Q4TmJ1?= =?utf-8?B?VnBUdFBIS3ZhVFRRY1Y5M3Z2dHNnUGw5WS8vNEdMdjdkcUJmY2RMcENhYlFU?= =?utf-8?B?N25DWTl6N0dYRW5PUzhiQ3ZqSWRjSHgwNjBTZ3pEMWVJZ21jNmJEL1BIVy95?= =?utf-8?B?OUcveGRFNmNwYm1BZmFPV0lGNTdvOVBaNWRHdTBMU0RxamE5TnhzUE56ODdp?= =?utf-8?B?TFB1SXY3Nk5sMlBZcVR2NCtJdGlCWmdXa1FoYWdWQ0FZWjJUNko3STdiWFY4?= =?utf-8?B?c0RhQ2tlVEdrR2lUazFuTllvdjZGcno0N0t6dS81QXF5cHI4QktqWE9iQWVB?= =?utf-8?B?WUY4eGNRWTdiNlJ5NCsrOWN6dU1hdFl3SC9PS2l3by9nRFZvWUVQT0F2SVd1?= =?utf-8?B?MWg4K1djVk5ndUJXSXBpUmVpRlVTYmwvNGhGQ1p6bGVrNGhHZXVxRDFEOHRs?= =?utf-8?B?RHhJVFk4bUZ0dmlGK0hIektybEtXQ1dpWDB0bGNhVGpwWG1GVVgyNGdPaGVQ?= =?utf-8?B?UXhmbnN2V0ltWGVaQWFLOGJhZk82bHR1RmcyVTMxRS9pVzNvd04vSXNzdUpn?= =?utf-8?B?WjNBa0hrTkFlazhVWEpQclBFZXh5OXpVQ1M2TUxMWWVwcWdoaWdZMEo4SFBL?= =?utf-8?B?N2ttQjJoK2pjQ0dvMHJpU29OeDl6eUhSanJYMWNMQWNRa01TY0RwN21Fd0o1?= =?utf-8?B?eXhneWE3aDFHK01SK0RORFBadkRTT0hBK0xkdWt3M0hJZ1E3VUJibHRkd1d6?= =?utf-8?B?TXY4Q2FIR0k0WUt5Zk1xMlR1U0R1TWJURkd5Tm5YMnZQdGZaL2c1TmFMTHZ2?= =?utf-8?B?ZldRYzN0bXNpaDE5ZWxUNTdlZ2RIY0ZMVGhCQTZLK3BGVFpoaExoUUxqdVZt?= =?utf-8?B?WlNOU0xUL2p3U3lOWmU3RUphUjUwZDBPeGgyeHhBSm9uZzFYcEhmN1lwOFBH?= =?utf-8?B?MWVqLzcrRHdpU2xkTnh2czEvemhiVDBNQmcwRlVtNGQ5cW5HajlueUlrZUlU?= =?utf-8?B?d212N21PbUx0VXcxcWhXeWNxd3lIZUt1NHNjTmVnQlpTdkFYeXoxTkRyOUhl?= =?utf-8?B?NDBrZ0Rydm1qaXVPUlM2ZkluQnRIWEdFS0NTMmlBTU9CYWFMTGF2MGlXbWEz?= =?utf-8?B?NnMvT3psNTduQmRMbWdTRmFyVUE2ZXZDNGlzdWM0eW9PdFJzQmNFck1naCtl?= =?utf-8?B?bzdwaC9SQlJVUVRTOWhjNDVNcXErV0g1Nm56M3lrUzA3WmFMMnh1c0RsSU5X?= =?utf-8?Q?SWKRTuX9+RvaNrg6TTvYmaE=3D?= X-OriginatorOrg: fit.cvut.cz X-MS-Exchange-CrossTenant-Network-Message-Id: d7244206-075c-4e25-b0d2-08d99f05994d X-MS-Exchange-CrossTenant-AuthSource: VI1PR06MB4848.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2021 20:07:44.6836 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f345c406-5268-43b0-b19f-5862fa6833f8 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UqgxkCz+ezD+Ts3KQ8f1MH+HR0XZXbz2yuIyXkJrcISN9DDF+XHrZ3N+qb+1na1M X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0602MB3840 X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Nov 2021 20:07:51 -0000 On Wed, 2021-11-03 at 17:31 +0100, Simon Sobisch via Gdb wrote: > With the Python API we can do nearly everything necessary related to > frames and >         st = frame.find_sal().symtab >         if st: >                 filename = st.filename > > provides the filename as noted in the debug info. > > If we now need to get the full filename as used in GDB (with source > path > and similar applied) the only version I've found so far involves GDB > text parsing: > >         # Get the full path for the source file >         old_frame = gdb.selected_frame() >         frame.select() >         info_source = gdb.execute("info source", False, True) >         pattern = re.compile(r"Located in (.*)\n") >         match = re.search(pattern, info_source) >         if match: >                 self.current_full_path = match.group(1) >         else: >                 self.current_full_path = filename_frame  >         old_frame.select() > > Which seems not very robust as it parses text which may have a > different > format in other GDB versions and likely a different text when > localized; > additional it needs a regex which is not that fast. > > Questions: > Is there a direct way to get the full source location for a frame? By glancing at the code, it seems to me that using st.fullname() # instead of st.filename should return the path printed by `info source`. Both return fullname member from struct symtab* IIUC. Did you try `fullname()`? Jan