<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;}
@font-face
        {font-family:"Lucida Console";
        panose-1:2 11 6 9 4 5 4 2 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;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        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" style="text-autospace:none">Hi all,<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.0pt;font-family:"Lucida Console""><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none">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="text-autospace:none">-mwindows -m32 -mthreads -Wl,--large-address-aware,--dynamicbase,--nxcompat,--export-all-symbols<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none">I identified that having all the options expect export-all-symbols, works perfectly.<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none">And having all the options except dynamicbase works too.<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none">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="text-autospace:none"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none">I will try to remove one and retry with the VM.
<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none">BTW, I have no idea of what these options do…
<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none">Cheers,<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none">Vincent<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>Nicolas Cellier<br>
<b>Sent:</b> Thursday, April 19, 2018 12:19<br>
<b>To:</b> Squeak 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 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"><o:p> </o:p></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>