<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><b>From:</b> Vm-dev [mailto:vm-dev-bounces@lists.squeakfoundation.org]
<b>On Behalf Of </b>Eliot Miranda<br>
<b>Sent:</b> Thursday, April 19, 2018 14:08<br>
<b>To:</b> Open Smalltalk Virtual Machine Development Discussion <vm-dev@lists.squeakfoundation.org><br>
<b>Subject:</b> Re: [Vm-dev] VM debugging - breakpoint issue on Windows<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Hi Vincent,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> On Apr 19, 2018, at 1:49 PM, <Vincent.Blondeau@lamresearch.com> <Vincent.Blondeau@lamresearch.com> wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Hi all,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> So I tested an hello world project, by trying different compilation options. Knowing that the ones that are in use to generate the .exe are:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> -mwindows -m32 -mthreads -Wl,--large-address-aware,--dynamicbase,--nxcompat,--export-all-symbols<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> I identified that having all the options expect export-all-symbols, works perfectly.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> And having all the options except dynamicbase works too.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Great, thanks!<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> I suppose that the options of the linker dynamicbase and export-all-symbols are conflicting and avoid to debug the app.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> I will try to remove one and retry with the VM.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> BTW, I have no idea of what these options do…<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">export-all-symbols tells the linker that all non-static symbols should be made available to dlls.  In Windows, exporting is by a funky mechanism, an export table, instead of, as in Unix, by run-time/load-time linking. 
 Using export-all-symbols avoids us having to use a .def file to specify the exports we need.  So if you find out that things work properly without export-all-symbols then we shall have to maintain a .def file.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">Bah...<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal">I removed both options and recompiled, your breakpoint is reached  in parseVMArgs !<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Vincent<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Cheers,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Vincent<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> From: Vm-dev [mailto:vm-dev-bounces@lists.squeakfoundation.org] On Behalf Of Nicolas Cellier<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Sent: Thursday, April 19, 2018 12:19<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> To: Squeak Virtual Machine Development Discussion <vm-dev@lists.squeakfoundation.org><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Subject: Re: [Vm-dev] VM debugging - breakpoint issue on Windows<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Hi Eliot,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> Mingw-w64 is a fork of mingw. It works for both 32 and 64 bits, contrarily<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> to mingw which wad stuck to 32bits at the time of fork. I tjink that -w64-<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> just refers to that.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="FR">>  <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="FR">> Le jeu. 19 avr. 2018 à 20:39, Eliot Miranda <eliot.miranda@gmail.com> a<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in">> écrit :<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">>  <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > Hi Vincent,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > On Thu, Apr 19, 2018 at 11:27 AM, Eliot Miranda <eliot.miranda@gmail.com><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> Hi Vincent,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> On Thu, Apr 19, 2018 at 9:30 AM, <Vincent.Blondeau@lamresearch.com><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Hi Dave,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> The optimization options are already disabled in the debug build and<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> -ggdb2 is used. So, the real code is used.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> How do I change the build in a way that the plugin is external?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> I see the same issue as you.  I'll take a look.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > Something I find strange is TOOLPREFIX:=i686-w64-mingw32-.  I would have<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > expected  TOOLPREFIX:=i686-w32-mingw32-. Nicolas, have you looked at this<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > recently?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > Vincent, if you try compiling a Hello World and setting breakpoint in main<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > you should be able to reproduce the issue.  Then you can try different<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > compilers quickly.  I tried debugging the VM and putting a breakpoint in<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > parseVMArgs, which is called to parse the command line.  It fails also.  So<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > we have a problem :-(<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Any experience is always welcome! Thanks!<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Vincent<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> -----Original Message-----<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> From: Vm-dev [mailto:vm-dev-bounces@lists.squeakfoundation.org] On<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Behalf Of David T. Lewis<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Sent: Wednesday, April 18, 2018 17:35<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> To: Open Smalltalk Virtual Machine Development Discussion <<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> vm-dev@lists.squeakfoundation.org><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Subject: Re: [Vm-dev] VM debugging - breakpoint issue on Windows<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Hi Vincent,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> I am not a Windows user so this may be completely wrong, but one thing I<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> have found in debugging plugins on Linux is that it is often necessary to<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> compile with optimization turned off so that the debugger is dealing with<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> the "real" code.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> I am guessing that perhaps your debugger is trying to use the C source<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> code to locate something that got optimized away by the compiler.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Sometimes it is helpful to compile the plugin as an external plugin (a<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> DLL). You can compile it with zero optimization and compiler flags set (-O0<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> -g or similar), and the resulting plugun should be visible to the debugger.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> The plugin that you compile this way should work with any VM (optimized or<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> not) and the debugger should still be able to see it.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> I have not done this on Windows, but that is my experience on Linux so<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> maybe it will help.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Dave<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> On Wed, Apr 18, 2018 at 06:33:12PM +0000,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> Vincent.Blondeau@lamresearch.com wrote:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Hi,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > I would like to set up a breakpoint in the VM but I got this error<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> when running:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Cannot insert breakpoint 1.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Error accessing memory address 0x509cad: Input/output error.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > For this, I am using gdb under Cygwin (same issue with powershell) and<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> invoque the primitive I want to test:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > pharo.cog.spur/builddbg/vm $  gdb --args ./Pharo.exe -headless<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ../..somewhereOnMyDisk.../Pharo.image eval "FilePluginPrims new<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> primitiveStdioDescriptorIsATTY."<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > I get these results:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > GNU gdb (GDB) 7.6.1<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Reading symbols from<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> C:\Users\BlondVi\Documents\GitRepos\opensmalltalk-vm\build.win32x86\pharo.cog.spur\builddbg\vm\Pharo.exe...done.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Next, I set a breakpoint in the primitive C method I created and run<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> the app:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > (gdb) br sqStdioDescriptorIsATTY<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Breakpoint 1 at 0x509cb6: file<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ../../platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c, line 337.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > (gdb) r<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Starting program:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> C:\Users\BlondVi\Documents\GitRepos\opensmalltalk-vm\build.win32x86\pharo.cog.spur\builddbg\vm/./Pharo.exe<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> --headless ../../../../../../../../..temp/logoVM/logoVM.image eval<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> "FilePluginPrims new primitiveStdioDescriptorIsATTY."<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > [New Thread 27416.0x95bc]<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > [New Thread 27416.0xa1d0]<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > [New Thread 27416.0x3aa4]<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > [New Thread 27416.0x88bc]<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > (gdb) Warning:<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Cannot insert breakpoint 1.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Error accessing memory address 0x509cad: Input/output error.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > What should I do to set the breakpoint correctly?<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Thanks in advance,<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> > Vincent Blondeau<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> ><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >>> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> --<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> _,,,^..^,,,_<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> best, Eliot<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> >> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > --<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > _,,,^..^,,,_<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> > best, Eliot<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">> ><o:p></o:p></p>
</div>
</body>
</html>