From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 61966 invoked by alias); 4 Oct 2017 21:34:28 -0000 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org Received: (qmail 61957 invoked by uid 89); 4 Oct 2017 21:34:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=HX-ClientProxiedBy:10b6, evaluates, UD:parse_and_eval, pretty-printer X-HELO: NAM03-DM3-obe.outbound.protection.outlook.com Received: from mail-dm3nam03on0119.outbound.protection.outlook.com (HELO NAM03-DM3-obe.outbound.protection.outlook.com) (104.47.41.119) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 04 Oct 2017 21:34:26 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=zheng432@purdue.edu; Received: from WangdeMacBook-Air.local (128.210.107.73) by MWHPR0801MB3803.namprd08.prod.outlook.com (2603:10b6:301:81::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 4 Oct 2017 21:34:23 +0000 Subject: Re: How to implement a new Python command that takes values from tty? To: Tom Tromey Cc: gdb@sourceware.org References: <42da207c-05cf-9648-bba7-650611a7bff4@purdue.edu> <87lgkqlig7.fsf@tromey.com> From: Yifei Zheng Message-ID: <8bc7860c-aeeb-59a2-451c-aa087bcf98bb@purdue.edu> Date: Wed, 04 Oct 2017 21:34:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <87lgkqlig7.fsf@tromey.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MWHPR21CA0026.namprd21.prod.outlook.com (2603:10b6:300:129::12) To MWHPR0801MB3803.namprd08.prod.outlook.com (2603:10b6:301:81::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fb3e6187-5177-4ee1-3757-08d50b6fae4a X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:MWHPR0801MB3803; X-Microsoft-Exchange-Diagnostics: 1;MWHPR0801MB3803;3:wx1PeSPHgv00RyqUZs4cTthvLSirI+aRU/DK1y1I2vbXrlGWDrw4P+6Z9vSn9jJXFNe97271fY9NmzwqYD2GkwTaF9iPJsUpr56173YUsxXbKxFNK7HvG5iJFaJCAGNKaex+wYzUUOtHtjLs6ltTkPYztIzX45BAVsMAGrA3AHnSdJGa4j4h2LrP+gZC77xZWw4iE666k82dMCf4y7nHRLchI6ztLBFhL/yrRx+KKBmcn4GCnDLSGPFnBub5aRRM;25:UbDZaYSLvogUuER/OZjVr+S1IBKERhiWIhMni9HCUQxXwbJDTi1W4lniU8ALEwc9GqrUymWF+4xN6DZEGD7KJJYrMXfmIZS8QmEkgypPv23RMsN3BNAPIHg9Nvb4bQ05V6lwQ1+rNeGajivbHX3XZbyzf9oCMkZm4lBCJm7wN1i58CH12/uMkMlkyq1yEPuYQJr2f8XGy5h2MtDLlExGyfAvP+NyH2eBNSwhJTkYpcQkjaDj0LinBR3YcWa3VcmygyxU4pwE0j8IiVb+3SNwkQxprbJsHqgcRcYfE13LEKcNARbSonY7fa0DiF+ACKt2cLtzmdwmOVoz2JHhgDz30g==;31:QHmQGdoO86SMBJ753jNLUb6YH8ju1ubnmGB6jhpeFaIV8aco3zvWRXJJj5CTAWbs077E+AG3uWMB170jdxQT8p1RB2hKy+4iSdiMlFaVLDIWO+iyuZHe+yRQU6zPuI4ZrftL+ibDx34isEteZE7zcWpEtOpn9YTHlSqEeFrz5hwawdP+NBSbE45zekgnEKOzfpdjd6dsZVdGUiMf/S+5/2hd3J8wJYoMMMnZ6zGUd94= X-MS-TrafficTypeDiagnostic: MWHPR0801MB3803: X-Microsoft-Exchange-Diagnostics: 1;MWHPR0801MB3803;20:TMeLDyXGy8CDqSi41M8WbOWWB/V7uR99HbEcLqueuGOW06poIjA2WHF47+QEiVFT9uO/qSnezayvwWymnlGQiBUU9FluA/0YVcAdY/kgbwh2YSt9oVcVsPjKP9vi6TDmGdj/JqBEEZKBB1IgnyDF61tebOukTL5zMgi6cubDdKmuBaYeS06S5GH+WE9VCFyPzv5bmbLa3YAN8fFsuAcEHqWby3zPoqVKEE5DUdOGYWsNLL7fZKoAtCJvt8yAd/dLyfeVsIXuDTf4YIQuDt9lJuZwx/332us7MjuQ/qb3bSvPdrWbA+do/a830sZ+xgW/x1bzWbVhbCKu5sr1MthVD3WVW+E/qj4Fufu0a/wf4ZE42nL2oQlVx0wtBpwY3JlMFRttQJSD3al4pjSWur+5WT0lVteW2VChHklWO2pcEMSCzKVsVHXA0JICb6TFygNqE2GLZHA9mOwY17GGEzGh/tSGhKxz15JKJ3e23ghdoG+d7+m/G63zj08nmBp+TV0R;4:uhWnasJEHroOv2y1JvjKgZMM96xPD+OmngPLpcYLT1O0M+2FbGeMbfqNwhoRbIuI/UZpnVRXgYM7A8tDpoN5kQmZnA2J9fc0DRD+jVZ7RQe0l9UhaW07Ojw3m+iAX+SojYeeTOh2TzPAJFjbkOJ+bc0MNEow6ynS00/rSq8ojt/0mwStECkrJrPq3fdrz8HWS9uxFNSzMq05G4FKs3+4SoYjJBRngokfZlx6w/j1uBX856QBT+MRt+QXBMOIHgt22L5hWYjmsysz6BUHGuAkqr+yJPBLxvdDSR1euELn2KE= X-Exchange-Antispam-Report-Test: UriScan:(166841340047005); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6041248)(20161123564025)(20161123555025)(20161123562025)(20161123558100)(20161123560025)(201703131423075)(201702281529075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR0801MB3803;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR0801MB3803; X-Forefront-PRVS: 0450A714CB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(199003)(377454003)(189002)(24454002)(316002)(8676002)(81166006)(50986999)(53936002)(305945005)(50466002)(23676002)(4326008)(478600001)(97736004)(54356999)(101416001)(6246003)(68736007)(25786009)(76176999)(6116002)(64126003)(2906002)(53546010)(3846002)(786003)(58126008)(75432002)(81156014)(7736002)(6512007)(83506001)(230700001)(8936002)(47776003)(229853002)(31686004)(65956001)(36756003)(65806001)(86362001)(31696002)(88552002)(33646002)(66066001)(105586002)(189998001)(2950100002)(6916009)(5660300001)(345774005)(6506006)(6486002)(65826007)(106356001)(16526018);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR0801MB3803;H:WangdeMacBook-Air.local;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: purdue.edu does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjA4MDFNQjM4MDM7MjM6M3RNdmozL0dSQmJIeXJSUm5UMEI2OWVn?= =?utf-8?B?NHFleWFBY2xwK2p2RENlRG12UHA4eVJrNnA3U3pjZGZBVkl1Nm5Vc0prbUtm?= =?utf-8?B?UXBNcktUTVF2SlZxcGJDVUJISDE1Ump6eTg2emlCdzdLK0tCTEdKMEFvSmRZ?= =?utf-8?B?cjM4aG9OaEpNODdIZ1NyL1Q4U0tSR0htNUdSaU0rTG91Ym9aZk02SnlWWUw0?= =?utf-8?B?Q1N3VlZpZ0Z2MnFLQ0h6Z3ZsSTR2bTVwbERYRUtmdnBjeS9aY3lxbEg4c3Iw?= =?utf-8?B?QWplRzFEeW8xRmwvTnhUaHJoUTB2eHJlN1pUdTJ1K3FlV0NPTWRGRW84NFAr?= =?utf-8?B?NWtNMXRXNm1KdnlqbnhaelJuTVlMTXBLKy9GWkw0RTdqL3Fta1dueEJIQUxr?= =?utf-8?B?RHNKZkpTMmVnQWNzeG5xTGc2dnpPSXF5VlI5R2JMS3lIcVIvR3QrcGw2VDZI?= =?utf-8?B?Yk9wNWhuOWNaZkdRbW9LbmZBSDl4RERaY0JuYlc0SGlhSFBNQVZvQXhqdkhS?= =?utf-8?B?dHpqM1JxZ0Z6UjJiYjNPS3lzRE1SaHJiR3Rmd2lYbm9IdEMrbTVSQ2N0dXNV?= =?utf-8?B?OFZ5SkxyZjh6SWRiMlRlbTJvL3J3TFRPTzdJWHNWbkxaVUhXaTdRamtrWnc1?= =?utf-8?B?Ujc3eTgzVlk0Q2VMNjdJc2dwbDZFdnVoT1VaMS9tK0FIWDc5VDRONGQvcG82?= =?utf-8?B?VmdwUlY4M2RpSXZHTHlRcEdPWWZVMFhqSU11WXZURFNLVUI5a3dNYkZOVU9O?= =?utf-8?B?VGhDeTl2cVpDQm8rZ0tUd3QxSDdMZ1k2bVVsZjREWm5MUU9HZldNTlU3QnF3?= =?utf-8?B?cUlMclVTbWRDWmR2ZjNhenNDZzNiSkxJa01qeCs1Unk3eGR5WTZGNUJTZEVN?= =?utf-8?B?Zm5EUndSNXpTak1ERUprRW1hbUlFNkpyYXUvNGw0ZUNQVmt4ak9UUWhTR0N3?= =?utf-8?B?OUxBMjhwcXRwa1VxbU9TdFRzbVlkenVvOXBITGVrV3pRMno5SzNUQWNPaFlH?= =?utf-8?B?UnF4NXliSGJoYnJHVzRkNEhnMmdjOHpUZzY0WEtCWkQrS2k4NE0xc0xmbzlV?= =?utf-8?B?c3B2TmtvQTl4bUNjWUwwOHliYXlNRnIrRXNxQ2NyY3VDSHRSOUxSd1JBQ0ZL?= =?utf-8?B?N0U4VUhTbFAwZ2ZSWHRENVVQU3pHS3A3VTY3eWVSTEhrbnhIdE5wQS84SVNm?= =?utf-8?B?N3l5eEh4UkY2QkUyTVprZGNnb0x1eXEwVUd1WDVsanJ5SGNoZHpac0NqMXJ2?= =?utf-8?B?YXY3UXRTaGZLM3QzVEp1alYvRnp0ZjNBdnQ3YWozNm12cGhZS0JRemJCenhn?= =?utf-8?B?YU1xTmpQNnVRUTBpaGV3WmlTcG9yTmVzbGhuaUdiQWVLNTVCM2hWM1ltMWY2?= =?utf-8?B?NUpzNWs3RktXQks0cTA0dmZpVGxlT1lmZVdlWkUvV1VaUHF1cG5BM2JqS3hi?= =?utf-8?B?RHFWaFRiVlpjUkNZTFJvOW5FdkdVQWZzMWNOK1hmTGhaM3doK2hOdUlTckhs?= =?utf-8?B?QUxoRzdPMDBaeVdWc2c2NVMwSStQS3Fjb1VVKzdIRWhzZ0dGc1c0aVFzYmp3?= =?utf-8?B?SmZQNkVhWkV2U1p3R3Y2MDZueitlRGJ2ZTRmbk1Za3NsK2FFODhFYm1SOFhS?= =?utf-8?B?MkRodStIeEVxVE9WTzZkNmNjSDZYNEZOWjdQcWNCM1Z6UTR6NkUvdjgvVlZ2?= =?utf-8?B?TGpvSjRKYlFwYXd1UmtsSU5BcXZhbkQxK1NJRzFWekdjZEtLeDU1aHE5dVJ5?= =?utf-8?B?ZEJ0bzNoMUZYYkp2ckhrcDBPUjlIRUNLaFRiRFhPUDZKeFdWSUNRMTFmY1Yx?= =?utf-8?B?aTRNZE1oR092YVNOWXRYd3NHdGVPU2pxaHpXWS9xMlREMHpMd3YzcDdISUVF?= =?utf-8?Q?kXpLgygSQyJLo=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR0801MB3803;6:o//5yPJ9sIFWQ0ClLb5zL7oQqMdes54PPJRlbOrG/ULTSoljtGB1N1hFP1vm34R0I4NJE2NeOuSANrvoaWJRtq6+MnS3K9kki0YdGy4sf8uKCou6DsrU+wK0mtbTnnqglV9mVhHuhu1Aumpdy+eQh6oFEz1XbWI0arZHVHpMh05GneHW0RLzqbkMdA0IHIWq30fonG/cu/DRRINDGoftFHzfVe4cPlTKbijMeji01A8p9/ybivnePzD80eS8TtZ2p2HBHm96Ah6ImbxfobQMubKixkjpRcElRan0iUhGYvKcxEogrZ28tjtUAb225P5nGQvYBSJaze95tftInd708g==;5:ff4XF5w83ejw6xMKVzxxJe1lmcqGoD+3SGSe3PBXC2sbUMatNw/SBUYCP6N6vaWfIrl7oSET3WQ2/ofXmMmlfbbk7U2LX/dWTp+h+kVsDIuBEiaiN86EiH3FjPbbLwRcLAtpL6iC54Dtw0fGnCZNRg==;24:cvA39tmryDjJ9Z1IO4TDzXOjbC0r4SLU30GBytneI1FNWqGPhJ4hWNxXKb4mc/Z0A2reuwfK10RKlL4ge9A0aehMGp2JbsqCPSdPR7D8GDE=;7:u+wjoVMYSh5zwfu3lEC2ZpprsYlg7OrH2ftXN8LpqAJPOH07C9gzBY0u8mFHpRpsvHboB28Hngnkne7+eA5m+KmoRrGOeFD/od2R2b4E2y2n60zosXquO3TamxSOjGs9G9pXIhG0q9nzDrw9B0rc94RXmPVTPBqeDRxR6E5YcoOQTPp3vWigbVJn+SPNUC++ao+JBwGjLl03c30PWDRt7QJvCD0dwajE8MnJj1EbWgk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: purdue.edu X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2017 21:34:23.3824 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4130bd39-7c53-419c-b1e5-8758d6d63f21 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0801MB3803 X-SW-Source: 2017-10/txt/msg00011.txt.bz2 Hi Tom, Thank you for pointing me out "parse_and_eval". I didn't write an pretty printer because it'll be a little ambiguous on type matching. Say the type I wanted to print is "std::vector" (which I call a pack) where Var is a class and has its own printer. What I wanted to do is to dereference all pointers in the vector and pretty-print each one. However, some of the "std::vector"s are packs while some are not. It's at debugger users' discretion. I don't know if that's generally a good practice or not. Any better idea? Yifei On 04/10/2017 5:19 PM, Tom Tromey wrote: >>>>>> "Yifei" == Yifei Zheng writes: > > Yifei> I have written a few gdb pretty-printers using Python but this time > Yifei> I'm trying to write a new command in Python. I want it to take > Yifei> arguments from gdb and somewhat works like gdb's print. (It's a > Yifei> special printer for some kind of std::vector). > > I'm curious why not write a pretty-printer for this case as well? > > Yifei> How can I let gdb evaluates the expression for me so that I don't have > Yifei> to parse it, and then give me the value instead of the name? > > You want gdb.parse_and_eval. > > Tom >