From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Andrew L. Moore" Newsgroups: gmane.emacs.devel Subject: Contributing LLVM.org patches to gud.el Date: Thu, 5 Feb 2015 02:46:12 -0500 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\)) Content-Type: multipart/alternative; boundary="Apple-Mail=_C728452A-33CB-4D53-B3D5-76B86B15C40A" X-Trace: ger.gmane.org 1423124833 13577 80.91.229.3 (5 Feb 2015 08:27:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 5 Feb 2015 08:27:13 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Feb 05 09:27:13 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YJHmK-0001Lt-L7 for ged-emacs-devel@m.gmane.org; Thu, 05 Feb 2015 09:27:13 +0100 Original-Received: from localhost ([::1]:40639 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YJHmK-0006d6-1N for ged-emacs-devel@m.gmane.org; Thu, 05 Feb 2015 03:27:12 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YJH8m-0005ss-1a for emacs-devel@gnu.org; Thu, 05 Feb 2015 02:46:20 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YJH8i-00077h-R0 for emacs-devel@gnu.org; Thu, 05 Feb 2015 02:46:19 -0500 Original-Received: from mail-yk0-x236.google.com ([2607:f8b0:4002:c07::236]:56438) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YJH8i-00077a-JB for emacs-devel@gnu.org; Thu, 05 Feb 2015 02:46:16 -0500 Original-Received: by mail-yk0-f182.google.com with SMTP id q9so2591944ykb.13 for ; Wed, 04 Feb 2015 23:46:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:content-type:subject:message-id:date:to:mime-version; bh=hQT9e57H3vhd9sRgQxdyXkUFB6lADK/A/CmOZDUcL7c=; b=D87R8sBbmL8Inao0V7h35DzggOMdnV27zlvrZ98xLY1DXkUiuxk0QDPSqUrFU+071Q 8e1wcqn2TUXo+fV3BVMuS1jITBLMtgceo8F+qqvzl2Hioa35iKdNI7eE+30SEACT5ppc 9aqZu/IyJ0zxBxtSUduPcx6w9m/ypSrGS7LdJsnsK6wE+UUWAOZbsR1wbHbt4rTHPP3d oSI69Gxn8t0QQKoSlhAk7mK9vYc6PgIfv36D0GTZj3UBIk/bbbFKGfVkXBs8emHLrBBw yHhghfx2F25NKEhLZyjLqcfktS0Dyf5lQ543ZIBIi+ZNF8+uYiGOzMeXNIxHbu2SXsF3 JzkQ== X-Received: by 10.236.67.106 with SMTP id i70mr565070yhd.177.1423122375454; Wed, 04 Feb 2015 23:46:15 -0800 (PST) Original-Received: from vesta.slewsys.org (104-11-240-92.lightspeed.tukrga.sbcglobal.net. [104.11.240.92]) by mx.google.com with ESMTPSA id z23sm2575845yhz.35.2015.02.04.23.46.14 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 04 Feb 2015 23:46:14 -0800 (PST) X-Mailer: Apple Mail (2.2070.6) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:4002:c07::236 X-Mailman-Approved-At: Thu, 05 Feb 2015 03:26:51 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:182433 Archived-At: --Apple-Mail=_C728452A-33CB-4D53-B3D5-76B86B15C40A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 The LLVM source repository includes a patch adding basic lldb support to = gud.el. The patch adapted to current gud.el (Github-mirror commit = 7e09ef09a479731d01b1ca46e94ddadd73ac98e3) is attached below. Although = I=E2=80=99m not affiliated with llvm.org , I=E2=80=99d = be interested to know if and how this might be accepted into the Emacs = distribution, RMS=E2=80=99s opinion of LLVM notwithstanding. Thank you! -AM --Apple-Mail=_C728452A-33CB-4D53-B3D5-76B86B15C40A Content-Type: multipart/mixed; boundary="Apple-Mail=_DB8AEFE1-761C-4767-8444-1DF2405747F0" --Apple-Mail=_DB8AEFE1-761C-4767-8444-1DF2405747F0 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 The LLVM source repository includes a patch adding basic lldb = support to gud.el.  The patch adapted to current gud.el = (Github-mirror commit 7e09ef09a479731d01b1ca46e94ddadd73ac98e3) is = attached below.  Although I=E2=80=99m not affiliated with llvm.org, I=E2=80=99d be = interested to know if and how this might be accepted into the Emacs = distribution, RMS=E2=80=99s opinion of LLVM notwithstanding. Thank = you!
-AM

= --Apple-Mail=_DB8AEFE1-761C-4767-8444-1DF2405747F0 Content-Disposition: attachment; filename=lldb-gud.el.patch Content-Type: application/octet-stream; name="lldb-gud.el.patch" Content-Transfer-Encoding: quoted-printable diff=20--git=20a/lisp/progmodes/gud.el=20b/lisp/progmodes/gud.el=0Aindex=20= 42c5b20..7f2e9c0=20100644=0A---=20a/lisp/progmodes/gud.el=0A+++=20= b/lisp/progmodes/gud.el=0A@@=20-35,7=20+35,7=20@@=0A=20;;=20kluge=20with=20= the=20gud-xdb-directories=20hack=20producing=20gud-dbx-directories.=0A=20= ;;=20Derek=20L.=20Davies=20=20added=20support=20= for=20jdb=20(Java=0A=20;;=20debugger.)=20=20Jan=20Nieuwenhuizen=20added=20= support=20for=20the=20Guile=20REPL=20(Guile=0A-;;=20debugger).=0A+;;=20= debugger).=20llvm.org=20added=20support=20for=20lldb.=0A=20=0A=20;;;=20= Code:=0A=20=0A@@=20-56,7=20+56,7=20@@=0A=20=0A=20(defgroup=20gud=20nil=0A= =20=20=20"The=20\"Grand=20Unified=20Debugger\"=20interface.=0A-Supported=20= debuggers=20include=20gdb,=20sdb,=20dbx,=20xdb,=20perldb,=0A+Supported=20= debuggers=20include=20lldb,=20gdb,=20sdb,=20dbx,=20xdb,=20perldb,=0A=20= pdb=20(Python),=20and=20jdb."=0A=20=20=20:group=20'processes=0A=20=20=20= :group=20'tools)=0A@@=20-141,12=20+141,12=20@@=20Used=20to=20gray=20out=20= relevant=20toolbar=20icons.")=0A=20=09=09=09=20=20=20=20=20=20=20= (display-graphic-p)=0A=20=09=09=09=20=20=20=20=20=20=20(fboundp=20= 'x-show-tip))=0A=20=09=09=20=20:visible=20(memq=20gud-minor-mode=0A-=09=09= =09=09'(gdbmi=20guiler=20dbx=20sdb=20xdb=20pdb))=0A+=09=09=09=09'(lldb=20= gdbmi=20guiler=20dbx=20sdb=20xdb=20pdb))=0A=20=09=20=20=20=20=20=20=20=20= =20=20:button=20(:toggle=20.=20gud-tooltip-mode))=0A=20=20=20=20=20= ([refresh]=09"Refresh"=20.=20gud-refresh)=0A=20=20=20=20=20([run]=09= menu-item=20"Run"=20gud-run=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20:enable=20(not=20gud-running)=0A-=09=09=20=20:visible=20= (memq=20gud-minor-mode=20'(gdbmi=20gdb=20dbx=20jdb)))=0A+=09=09=20=20= :visible=20(memq=20gud-minor-mode=20'(lldb=20gdbmi=20gdb=20dbx=20jdb)))=0A= =20=20=20=20=20([go]=09menu-item=20(if=20(bound-and-true-p=20= gdb-active-process)=0A=20=09=09=09=20=20=20=20=20=20"Continue"=20"Run")=20= gud-go=0A=20=09=09=20=20:visible=20(and=20(eq=20gud-minor-mode=20'gdbmi)=0A= @@=20-164,18=20+164,18=20@@=20Used=20to=20gray=20out=20relevant=20= toolbar=20icons.")=0A=20=20=20=20=20([tbreak]=09menu-item=20"Temporary=20= Breakpoint"=20gud-tbreak=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20:enable=20(not=20gud-running)=0A=20=09=09=20=20:visible=20(memq=20= gud-minor-mode=0A-=09=09=09=09'(gdbmi=20gdb=20sdb=20xdb)))=0A+=09=09=09=09= '(lldb=20gdbmi=20gdb=20sdb=20xdb)))=0A=20=20=20=20=20([break]=09= menu-item=20"Set=20Breakpoint"=20gud-break=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20:enable=20(not=20gud-running)=0A=20=09=09=20=20= :visible=20(gud-tool-bar-item-visible-no-fringe))=0A=20=20=20=20=20([up]=09= menu-item=20"Up=20Stack"=20gud-up=0A=20=09=09=20=20:enable=20(not=20= gud-running)=0A=20=09=09=20=20:visible=20(memq=20gud-minor-mode=0A-=09=09= =09=09=20'(gdbmi=20gdb=20guiler=20dbx=20xdb=20jdb=20pdb)))=0A+=09=09=09=09= =20'(lldb=20gdbmi=20gdb=20guiler=20dbx=20xdb=20jdb=20pdb)))=0A=20=20=20=20= =20([down]=09menu-item=20"Down=20Stack"=20gud-down=0A=20=09=09=20=20= :enable=20(not=20gud-running)=0A=20=09=09=20=20:visible=20(memq=20= gud-minor-mode=0A-=09=09=09=09=20'(gdbmi=20gdb=20guiler=20dbx=20xdb=20= jdb=20pdb)))=0A+=09=09=09=09=20'(lldb=20gdbmi=20gdb=20guiler=20dbx=20xdb=20= jdb=20pdb)))=0A=20=20=20=20=20([pp]=09menu-item=20"Print=20S-expression"=20= gud-pp=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= :enable=20(and=20(not=20gud-running)=0A=20=09=09=09=09=20=20= (bound-and-true-p=20gdb-active-process))=0A@@=20-187,7=20+187,7=20@@=20= Used=20to=20gray=20out=20relevant=20toolbar=20icons.")=0A=20=09=09=09=20=20= =20=20=20=20"Dump=20object"=0A=20=09=09=09=20=20=20=20"Print=20= Dereference")=20gud-pstar=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20:enable=20(not=20gud-running)=0A-=09=09=20=20:visible=20= (memq=20gud-minor-mode=20'(gdbmi=20gdb=20jdb)))=0A+=09=09=20=20:visible=20= (memq=20gud-minor-mode=20'(lldb=20gdbmi=20gdb=20jdb)))=0A=20=20=20=20=20= ([print]=09menu-item=20"Print=20Expression"=20gud-print=0A=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20:enable=20(not=20gud-running))=0A= =20=20=20=20=20([watch]=09menu-item=20"Watch=20Expression"=20gud-watch=0A= @@=20-196,13=20+196,13=20@@=20Used=20to=20gray=20out=20relevant=20= toolbar=20icons.")=0A=20=20=20=20=20([finish]=09menu-item=20"Finish=20= Function"=20gud-finish=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20:enable=20(not=20gud-running)=0A=20=09=09=20=20:visible=20(memq=20= gud-minor-mode=0A-=09=09=09=09=20'(gdbmi=20gdb=20guiler=20xdb=20jdb=20= pdb)))=0A+=09=09=09=09=20'(lldb=20gdbmi=20gdb=20guiler=20xdb=20jdb=20= pdb)))=0A=20=20=20=20=20([stepi]=09menu-item=20"Step=20Instruction"=20= gud-stepi=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= :enable=20(not=20gud-running)=0A-=09=09=20=20:visible=20(memq=20= gud-minor-mode=20'(gdbmi=20gdb=20dbx)))=0A+=09=09=20=20:visible=20(memq=20= gud-minor-mode=20'(lldb=20gdbmi=20gdb=20dbx)))=0A=20=20=20=20=20([nexti]=09= menu-item=20"Next=20Instruction"=20gud-nexti=0A=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20:enable=20(not=20gud-running)=0A-=09=09=20=20= :visible=20(memq=20gud-minor-mode=20'(gdbmi=20gdb=20dbx)))=0A+=09=09=20=20= :visible=20(memq=20gud-minor-mode=20'(lldb=20gdbmi=20gdb=20dbx)))=0A=20=20= =20=20=20([step]=09menu-item=20"Step=20Line"=20gud-step=0A=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20:enable=20(not=20gud-running))=0A= =20=20=20=20=20([next]=09menu-item=20"Next=20Line"=20gud-next=0A@@=20= -237,7=20+237,7=20@@=20Used=20to=20gray=20out=20relevant=20toolbar=20= icons.")=0A=20=09:visible=20(not=20(eq=20gud-minor-mode=20'gdbmi)))=0A=20= =20=20=20=20=20=20=20([menu-bar=20run]=20menu-item=0A=20=09,(propertize=20= "run"=20'face=20'font-lock-doc-face)=20gud-run=0A-=09:visible=20(memq=20= gud-minor-mode=20'(gdbmi=20gdb=20dbx=20jdb)))=0A+=09:visible=20(memq=20= gud-minor-mode=20'(lldb=20gdbmi=20gdb=20dbx=20jdb)))=0A=20=20=20=20=20=20= =20=20([menu-bar=20go]=20menu-item=0A=20=09,(propertize=20"=20go=20"=20= 'face=20'font-lock-doc-face)=20gud-go=0A=20=09:visible=20(and=20(eq=20= gud-minor-mode=20'gdbmi)=0A@@=20-356,6=20+356,7=20@@=20are=20interpreted=20= specially=20if=20present.=20=20These=20are:=0A=20=20=20%l=20--=20Number=20= of=20current=20source=20line.=0A=20=20=20%e=20--=20Text=20of=20the=20C=20= lvalue=20or=20function-call=20expression=20surrounding=20point.=0A=20=20=20= %a=20--=20Text=20of=20the=20hexadecimal=20address=20surrounding=20point.=0A= +=20=20%b=20--=20Text=20of=20the=20most=20recently=20created=20= breakpoint=20id.=0A=20=20=20%p=20--=20Prefix=20argument=20to=20the=20= command=20(if=20any)=20as=20a=20number.=0A=20=20=20%c=20--=20Fully=20= qualified=20class=20name=20derived=20from=20the=20expression=0A=20=20=20=20= =20=20=20=20=20surrounding=20point=20(jdb=20only).=0A@@=20-964,6=20= +965,131=20@@=20SKIP=20is=20the=20number=20of=20chars=20to=20skip=20on=20= each=20line,=20it=20defaults=20to=200."=0A=20=0A=20=0C=0A=20;;=20= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A+;;=20= lldb=20functions=0A+=0A+;;=20History=20of=20argument=20lists=20passed=20= to=20lldb.=0A+(defvar=20gud-lldb-history=20nil)=0A+=0A+;;=20Keeps=20= track=20of=20breakpoint=20created.=20=20In=20the=20following=20case,=20= the=20id=20is=20"1".=0A+;;=20It=20is=20used=20to=20implement=20temporary=20= breakpoint.=0A+;;=20(lldb)=20b=20main.c:39=0A+;;=20breakpoint=20set=20= --file=20'main.c'=20--line=2039=0A+;;=20Breakpoint=20created:=201:=20= file=20=3D'main.c',=20line=20=3D=2039,=20locations=20=3D=201=0A+(defvar=20= gud-breakpoint-id=20nil)=0A+=0A+(defun=20lldb-extract-breakpoint-id=20= (string)=0A+=20=20;;=20Search=20for=20"Breakpoint=20created:=20= \\([^:\n]*\\):"=20pattern.=0A+=20=20(if=20(string-match=20"Breakpoint=20= created:=20\\([^:\n]*\\):"=20string)=0A+=20=20=20=20=20=20(progn=0A+=20=20= =20=20=20=20=20=20(setq=20gud-breakpoint-id=20(match-string=201=20= string))=0A+=20=20=20=20=20=20=20=20(message=20"breakpoint=20id:=20%s"=20= gud-breakpoint-id)))=0A+)=0A+=0A+(defun=20gud-lldb-marker-filter=20= (string)=0A+=20=20(setq=20gud-marker-acc=0A+=09(if=20gud-marker-acc=20= (concat=20gud-marker-acc=20string)=20string))=0A+=20=20= (lldb-extract-breakpoint-id=20gud-marker-acc)=0A+=20=20(let=20(start)=0A= +=20=20=20=20;;=20Process=20all=20complete=20markers=20in=20this=20chunk=0A= +=20=20=20=20(while=20(or=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20= (lldb)=20r=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20Process=2015408=20= launched:=20'/Volumes/data/lldb/svn/trunk/test/conditional_break/a.out'=20= (x86_64)=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20(lldb)=20Process=20= 15408=20stopped=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20*=20thread=20= #1:=20tid=20=3D=200x2e03,=200x0000000100000de8=20a.out`c=20+=207=20at=20= main.c:39,=20stop=20reason=20=3D=20breakpoint=201.1,=20queue=20=3D=20= com.apple.main-thread=0A+=20=20=20=20=20=20=20=20=20=20=20=20= (string-match=20"=20at=20\\([^:\n]*\\):\\([0-9]*\\),=20stop=20reason=20=3D= =20.*\n"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20gud-marker-acc=20start)=0A+=20=20=20=20=20=20=20=20=20=20=20= =20;;=20(lldb)=20frame=20select=20-r=201=0A+=20=20=20=20=20=20=20=20=20=20= =20=20;;=20frame=20#1:=200x0000000100000e09=20a.out`main=20+=2025=20at=20= main.c:44=0A+=20=20=20=20=20=20=20=20=20=20=20=20(string-match=20= "\nframe.*=20at=20\\([^:\n]*\\):\\([0-9]*\\)\n"=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20gud-marker-acc=20= start))=0A+=20=20=20=20=20=20(setq=20gud-last-frame=0A+=20=20=20=20=20=20= =20=20=20=20=20=20(cons=20(match-string=201=20gud-marker-acc)=0A+=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(string-to-number=20= (match-string=202=20gud-marker-acc)))=0A+=20=20=20=20=20=20=20=20=20=20=20= =20start=20(match-end=200)))=0A+=0A+=20=20=20=20;;=20Search=20for=20the=20= last=20incomplete=20line=20in=20this=20chunk=0A+=20=20=20=20(while=20= (string-match=20"\n"=20gud-marker-acc=20start)=0A+=20=20=20=20=20=20= (setq=20start=20(match-end=200)))=0A+=0A+=20=20=20=20;;=20If=20we=20have=20= an=20incomplete=20line,=20store=20it=20in=20gud-marker-acc.=0A+=20=20=20=20= (setq=20gud-marker-acc=20(substring=20gud-marker-acc=20(or=20start=20= 0))))=0A+=20=20string)=0A+=0A+;;=20Keeps=20track=20of=20whether=20the=20= Python=20lldb_oneshot_break=20function=20definition=20has=0A+;;=20been=20= exec'ed.=0A+(defvar=20lldb-oneshot-break-defined=20nil)=0A+=0A= +;;;###autoload=0A+(defun=20lldb=20(command-line)=0A+=20=20"Run=20lldb=20= on=20program=20FILE=20in=20buffer=20*gud-FILE*.=0A+The=20directory=20= containing=20FILE=20becomes=20the=20initial=20working=20directory=0A+and=20= source-file=20directory=20for=20your=20debugger."=0A+=20=20(interactive=20= (list=20(gud-query-cmdline=20'lldb)))=0A+=0A+=20=20(gud-common-init=20= command-line=20nil=20'gud-lldb-marker-filter)=0A+=20=20(set=20= (make-local-variable=20'gud-minor-mode)=20'lldb)=0A+=20=20(setq=20= lldb-oneshot-break-defined=20nil)=0A+=0A+=20=20(gud-def=20gud-listb=20=20= "breakpoint=20list"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20"l"=20=20=20=20"List=20all=20breakpoints.")=0A+=20=20= (gud-def=20gud-bt=20=20=20=20=20"thread=20backtrace"=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"b"=20=20=20=20"Show=20= stack=20for=20the=20current=20thread.")=0A+=20=20(gud-def=20gud-bt-all=20= "thread=20backtrace=20all"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20"B"=20=20=20=20"Show=20stacks=20for=20all=20the=20= threads.")=0A+=0A+=20=20(gud-def=20gud-break=20=20"breakpoint=20set=20-f=20= %f=20-l=20%l"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20"\C-b"=20"Set=20breakpoint=20at=20current=20line.")=0A+=20=20= (gud-def=20gud-tbreak=0A+=09=20=20=20(progn=20(gud-call=20"breakpoint=20= set=20-f=20%f=20-l=20%l")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20(sit-for=201)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(if=20(not=20lldb-oneshot-break-defined)=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(progn=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20The=20"\\n"'s=20= are=20required=20to=20escape=20the=20newline=20chars=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20passed=20to=20= the=20lldb=20process.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20(gud-call=20(concat=20"script=20exec=20\"def=20= lldb_oneshot_break(frame,=20bp_loc):\\n"=0A+=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"=20=20=20= =20target=3Dframe.GetThread().GetProcess().GetTarget()\\n"=0A+=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20"=20=20=20=20bp=3Dbp_loc.GetBreakpoint()\\n"=0A+=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= "=20=20=20=20print=20'Deleting=20oneshot=20breakpoint:',=20bp\\n"=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20"=20=20=20=20target.BreakpointDelete(bp.GetID())\""))=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (sit-for=201)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20;;=20Set=20the=20flag=20since=20Python=20knows=20about=20= the=20function=20def=20now.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(setq=20lldb-oneshot-break-defined=20t)))=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(gud-call=20= "breakpoint=20command=20add=20-p=20%b=20-o=20'lldb_oneshot_break(frame,=20= bp_loc)'"))=0A+=09=20=20=20=20=20=20=20=20=20=20=20=20=20=20"\C-t"=20= "Set=20temporary=20breakpoint=20at=20current=20line.")=0A+=20=20(gud-def=20= gud-remove=20"breakpoint=20clear=20-f=20%f=20-l=20%l"=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"\C-d"=20"Remove=20= breakpoint=20at=20current=20line")=0A+=20=20(gud-def=20gud-step=20=20=20= "thread=20step-in"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20"\C-s"=20"Step=20one=20source=20line=20with=20display.")=0A= +=20=20(gud-def=20gud-stepi=20=20"thread=20step-inst"=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"\C-i"=20"Step=20one=20= instruction=20with=20display.")=0A+=20=20(gud-def=20gud-next=20=20=20= "thread=20step-over"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20"\C-n"=20"Step=20one=20line=20(skip=20functions).")=0A+=20= =20(gud-def=20gud-nexti=20=20"thread=20step-inst-over"=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20nil=20=20=20=20"Step=20= one=20instruction=20(skip=20functions).")=0A+=20=20(gud-def=20gud-cont=20= =20=20"process=20continue"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20"\C-r"=20"Continue=20with=20display.")=0A+=20=20= (gud-def=20gud-finish=20"thread=20step-out"=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20"\C-f"=20"Finish=20executing=20= current=20function.")=0A+=20=20(gud-def=20gud-up=20=20=20=20=20"frame=20= select=20-r=20%p"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20"<"=20=20=20=20"Up=201=20stack=20frame.")=0A+=20=20(gud-def=20= gud-down=20=20=20"frame=20select=20-r=20-%p"=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20">"=20=20=20=20"Down=201=20stack=20= frame.")=0A+=20=20(gud-def=20gud-print=20=20"expression=20--=20%e"=0A+=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"\C-p"=20= "Evaluate=20C=20expression=20at=20point.")=0A+=20=20(gud-def=20gud-pstar=20= =20"expression=20--=20*%e"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20nil=20=20=20=20"Evaluate=20C=20dereferenced=20= pointer=20expression=20at=20point.")=0A+=20=20(gud-def=20gud-run=20=20=20= =20"run"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20nil=20=20=20=20"Run=20the=20program.")=0A+=20=20(gud-def=20= gud-stop-subjob=20=20=20=20"process=20kill"=0A+=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20nil=20=20=20=20"Stop=20the=20= program.")=0A+=0A+=20=20(setq=20comint-prompt-regexp=20=20= "\\(^\\|\n\\)\\*")=0A+=20=20(setq=20paragraph-start=20= comint-prompt-regexp)=0A+=20=20(run-hooks=20'lldb-mode-hook)=0A+=20=20)=0A= +=0A+=0C=0A+;;=20= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=20;;=20= sdb=20functions=0A=20=0A=20;;=20History=20of=20argument=20lists=20passed=20= to=20sdb.=0A@@=20-2499,9=20+2625,10=20@@=20gud,=20see=20`gud-mode'."=0A=20= =20=20"Major=20mode=20for=20interacting=20with=20an=20inferior=20= debugger=20process.=0A=20=0A=20=20=20=20You=20start=20it=20up=20with=20= one=20of=20the=20commands=20M-x=20gdb,=20M-x=20sdb,=20M-x=20dbx,=0A-M-x=20= perldb,=20M-x=20xdb,=20or=20M-x=20jdb.=20=20Each=20entry=20point=20= finishes=20by=20executing=20a=0A-hook;=20`gdb-mode-hook',=20= `sdb-mode-hook',=20`dbx-mode-hook',=0A-`perldb-mode-hook',=20= `xdb-mode-hook',=20or=20`jdb-mode-hook'=20respectively.=0A+M-x=20perldb,=20= M-x=20xdb,=20M-x=20jdb,=20or=20M-x=20lldb.=20=20Each=20entry=20point=20= finishes=20by=0A+executing=20a=20hook;=20`gdb-mode-hook',=20= `sdb-mode-hook',=20`dbx-mode-hook',=0A+`perldb-mode-hook',=20= `xdb-mode-hook',=20`jdb-mode-hook',=20or=20`lldb-mode-hook'=0A= +respectively.=0A=20=0A=20After=20startup,=20the=20following=20commands=20= are=20available=20in=20both=20the=20GUD=0A=20interaction=20buffer=20and=20= any=20source=20buffer=20GUD=20visits=20due=20to=20a=20breakpoint=20stop=0A= @@=20-2531,7=20+2658,7=20@@=20Under=20gdb,=20sdb=20and=20xdb,=20= \\[gud-tbreak]=20behaves=20exactly=20like=20\\[gud-break],=0A=20except=20= that=20the=20breakpoint=20is=20temporary;=20that=20is,=20it=20is=20= removed=20when=0A=20execution=20stops=20on=20it.=0A=20=0A-Under=20gdb,=20= dbx,=20and=20xdb,=20\\[gud-up]=20pops=20up=20through=20an=20enclosing=20= stack=0A+Under=20gdb,=20dbx,=20xdb,=20and=20lldb,=20\\[gud-up]=20pops=20= up=20through=20an=20enclosing=20stack=0A=20frame.=20=20\\[gud-down]=20= drops=20back=20down=20through=20one.=0A=20=0A=20If=20you=20are=20using=20= gdb=20or=20xdb,=20\\[gud-finish]=20runs=20execution=20to=20the=20return=20= from=0A@@=20-2858,7=20+2985,7=20@@=20Obeying=20it=20means=20displaying=20= in=20another=20window=20the=20specified=20file=20and=20line."=0A=20=09= result)=0A=20=20=20=20=20(while=20(and=20str=0A=20=09=09(let=20= ((case-fold-search=20nil))=0A-=09=09=20=20(string-match=20= "\\([^%]*\\)%\\([adefFlpc]\\)"=20str)))=0A+=09=09=20=20(string-match=20= "\\([^%]*\\)%\\([abdefFlpc]\\)"=20str)))=0A=20=20=20=20=20=20=20(let=20= ((key=20(string-to-char=20(match-string=202=20str)))=0A=20=09=20=20=20=20= subst)=0A=20=09(cond=0A@@=20-2886,6=20+3013,8=20@@=20Obeying=20it=20= means=20displaying=20in=20another=20window=20the=20specified=20file=20= and=20line."=0A=20=09=20=20(setq=20subst=20(gud-find-expr)))=0A=20=09=20= ((eq=20key=20?a)=0A=20=09=20=20(setq=20subst=20(gud-read-address)))=0A+=09= =20((eq=20key=20?b)=0A+=09=20=20(setq=20subst=20gud-breakpoint-id))=0A=20= =09=20((eq=20key=20?c)=0A=20=09=20=20(setq=20subst=0A=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20(gud-find-class=0A@@=20-3520,6=20+3649,7=20= @@=20With=20arg,=20dereference=20expr=20if=20ARG=20is=20positive,=20= otherwise=20do=20not=20dereference."=0A=20(defun=20= gud-tooltip-print-command=20(expr)=0A=20=20=20"Return=20a=20suitable=20= command=20to=20print=20the=20expression=20EXPR."=0A=20=20=20(pcase=20= gud-minor-mode=0A+=20=20=20=20(`lldb=20(concat=20"expression=20-o=20--=20= \""=20expr=20"\""))=0A=20=20=20=20=20(`gdbmi=20(concat=20= "-data-evaluate-expression=20\""=20expr=20"\""))=0A=20=20=20=20=20= (`guiler=20expr)=0A=20=20=20=20=20(`dbx=20(concat=20"print=20"=20expr))=0A= --Apple-Mail=_DB8AEFE1-761C-4767-8444-1DF2405747F0 Content-Transfer-Encoding: 7bit Content-Type: text/html; charset=us-ascii
--Apple-Mail=_DB8AEFE1-761C-4767-8444-1DF2405747F0-- --Apple-Mail=_C728452A-33CB-4D53-B3D5-76B86B15C40A--