<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Debugging x64 code in Visual Studio 2010 doesn't allow one to view 64-bit addresses in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814719#M80433</link>
    <description>I originally posted this a while back in the &lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=91712"&gt;general IVF forum&lt;/A&gt;, but no one was quite sure what to do with it. Now that there is a dedicated debugging forum, I'll try here! Here is a summary of what I found, and what went on:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;When I attempt to build our code for x64 architecture through VS and 
debug it, then view the "Memory windows" during debugging, I get nothing
 but ??????'s for all addresses and variants of display types. &lt;BR /&gt;&lt;BR /&gt;I
 can successfully tell the window to display a given address using 
LOC(variable) (but going by straight memory address gives problems as it
 will show me 0x7FFFFFFF). LOC(variable) works fine, except that no 
matter what variable I choose, it shows me nothing. In a possibly 
related issue, attempting to use data break points results in the 
breakpoints being skipped entirely.&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;Now, using the immediate window I can get the address of implicitly 
defined variables, but when I paste it into the memory window I don't 
think it works quite right. If I want to look at the location of &lt;I&gt;implicit_variable_1&lt;/I&gt;, I go to the 'Immediate Window' and type LOC(&lt;I&gt;implicit_variable_1&lt;/I&gt;)
 and get an address, #00000001888EBD20 (which would be a 64-bit address 
if I am not mistaken). I then go to the memory window and paste this 
address into the 'Address:' field and the memory window brings up 
location 0x7FFFFFFF (the 2GB or 32-Bitlimit, if I am not mistaken) and a
 whole lot of ??????? (the original question that started this thread).
 If I type the variable name &lt;I&gt;implicit_variable_1&lt;/I&gt; directly into 
the 'Address:' field, it shows me a memory region starting at 0x00000020
 or something equally incorrect (along with said ???????s).&lt;BR /&gt;&lt;BR /&gt;If I switch to the not implicitly defined variable &lt;I&gt;var_1&lt;/I&gt;,
 and I type its name directly into the memory window's 'Address:' field,
 it pops up with a seemingly correct memory location. One that holds 
what I am expecting and corresponds to what I get from the 'Immediate 
Window' using LOC(&lt;I&gt;var_1&lt;/I&gt;). For example, if I type &lt;I&gt;var_1&lt;/I&gt; into the Memory Window, I get address 0x0000000186DAF9F4, and when viewed as a real, it shows me the value that &lt;I&gt;var_1&lt;/I&gt;
 should have. However, if I turn this around and type the address into 
the 'Address:' field directly, I once again get taken to address 
0x7FFFFFFF and see all ???????s. Typing LOC(&lt;I&gt;var_1&lt;/I&gt;) in the 
'Address:' field takes me to 0x86DAF9F4 (seemingly corresponding 32-bit 
address, even though it is above the 32-bit addressable space) in the 
memory region and shows me all ?????????s.&lt;BR /&gt;&lt;BR /&gt;If I attempt to set a 
data break point on the address of the explicitly defined variable 
(0x0000000186DAF9F4 or what I presume is its 32-bit equivilent of 
0x86DAF9F4) it tells me it is setting a breakpoint "When '0x7FFFFFFF' 
changes (4 bytes)" which is clearly incorrect.&lt;BR /&gt;&lt;BR /&gt;It seems to me (in
 my only slightly educated opinion) that there is confustion about 32 
and 64-bit applications and addressing schemes. That said, I have no 
idea if it is a Visual Studio issue, or an IVF issue, or if it is no 
issue at all and I just have something set incorrectly&lt;BR /&gt;&lt;BR /&gt;Here is a simple program that is able to reproduce this issue:&lt;BR /&gt;[fxfortran]program fortBreakTest  
  
   implicit none  
  
   ! Variables  
   double precision, dimension (1000000) :: array  
   integer :: i, j, k  
   ! Body of fortBreakTest  
  
   i = 0  
   j = 0  
   k = 0  
  
   do i = 1, 1000000  
       array(i) = i  
   enddo  
  
   i = 1  
  
   j = 2*i  
  
   do i = 1, 10  
       k = k + i  
   enddo  
  
   print*, "I, J, K = ", i, j, k  
  
   end program fortBreakTest [/fxfortran] In the debugger I have break points on the i=0 and i=1 lines. If I ask for the location of array(1000000) in the Immediate Window, I get&lt;BR /&gt;LOC(array(1000000))#0000000140216298&lt;BR /&gt;&lt;BR /&gt;Pasting
 LOC(array(1000000)) into the Memory Window's 'Address:' field brings up
 the memory location 0x40216298 and gives me a whole lot of ????????s in
 the display. Pasting the address (0x0000000140216298) into the Memory 
Window's 'Address:' field brings up 0x7FFFFFFF and displaysa lot of 
???????s. &lt;BR /&gt;&lt;BR /&gt;Entering array(1000000) in the 'Address:' field 
brings up 0x0000000140216298 and shows the contents of that array 
element correctly. However, if I take even a single step with the 
debugger the Memory Window switches from the correct memory location to 
0x7FFFFFFF and displays ????????s all the way around.&lt;BR /&gt;&lt;BR /&gt;Hopefully this will allow you to reproduce what I am encountering and suggest a fix/way around it. Thanks again for your help.&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;As a quick update, creating a very nearly identical program in C++ 
(compiled with Visual Studio's C++ compiler, not Intel's) and running 
the exact same tests worked just fine. The Memory Window in C++ 
debuggerhappily accepted addresses in 64-bit form, both if input 
directly, or as the address of the array variable.&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;This occurs(ed) with both IVF 12.0.4.196 and the latest we've tried, 12.1.3526.2010.Thanks for any help people can provide, this bug makes it near impossible for us to begug the 64-bit version of our application and we'd really like to have that ability. I can post screenshots of this behavior if it will help.</description>
    <pubDate>Fri, 25 May 2012 15:30:11 GMT</pubDate>
    <dc:creator>mford78</dc:creator>
    <dc:date>2012-05-25T15:30:11Z</dc:date>
    <item>
      <title>Debugging x64 code in Visual Studio 2010 doesn't allow one to view 64-bit addresses</title>
      <link>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814719#M80433</link>
      <description>I originally posted this a while back in the &lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=91712"&gt;general IVF forum&lt;/A&gt;, but no one was quite sure what to do with it. Now that there is a dedicated debugging forum, I'll try here! Here is a summary of what I found, and what went on:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;When I attempt to build our code for x64 architecture through VS and 
debug it, then view the "Memory windows" during debugging, I get nothing
 but ??????'s for all addresses and variants of display types. &lt;BR /&gt;&lt;BR /&gt;I
 can successfully tell the window to display a given address using 
LOC(variable) (but going by straight memory address gives problems as it
 will show me 0x7FFFFFFF). LOC(variable) works fine, except that no 
matter what variable I choose, it shows me nothing. In a possibly 
related issue, attempting to use data break points results in the 
breakpoints being skipped entirely.&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;Now, using the immediate window I can get the address of implicitly 
defined variables, but when I paste it into the memory window I don't 
think it works quite right. If I want to look at the location of &lt;I&gt;implicit_variable_1&lt;/I&gt;, I go to the 'Immediate Window' and type LOC(&lt;I&gt;implicit_variable_1&lt;/I&gt;)
 and get an address, #00000001888EBD20 (which would be a 64-bit address 
if I am not mistaken). I then go to the memory window and paste this 
address into the 'Address:' field and the memory window brings up 
location 0x7FFFFFFF (the 2GB or 32-Bitlimit, if I am not mistaken) and a
 whole lot of ??????? (the original question that started this thread).
 If I type the variable name &lt;I&gt;implicit_variable_1&lt;/I&gt; directly into 
the 'Address:' field, it shows me a memory region starting at 0x00000020
 or something equally incorrect (along with said ???????s).&lt;BR /&gt;&lt;BR /&gt;If I switch to the not implicitly defined variable &lt;I&gt;var_1&lt;/I&gt;,
 and I type its name directly into the memory window's 'Address:' field,
 it pops up with a seemingly correct memory location. One that holds 
what I am expecting and corresponds to what I get from the 'Immediate 
Window' using LOC(&lt;I&gt;var_1&lt;/I&gt;). For example, if I type &lt;I&gt;var_1&lt;/I&gt; into the Memory Window, I get address 0x0000000186DAF9F4, and when viewed as a real, it shows me the value that &lt;I&gt;var_1&lt;/I&gt;
 should have. However, if I turn this around and type the address into 
the 'Address:' field directly, I once again get taken to address 
0x7FFFFFFF and see all ???????s. Typing LOC(&lt;I&gt;var_1&lt;/I&gt;) in the 
'Address:' field takes me to 0x86DAF9F4 (seemingly corresponding 32-bit 
address, even though it is above the 32-bit addressable space) in the 
memory region and shows me all ?????????s.&lt;BR /&gt;&lt;BR /&gt;If I attempt to set a 
data break point on the address of the explicitly defined variable 
(0x0000000186DAF9F4 or what I presume is its 32-bit equivilent of 
0x86DAF9F4) it tells me it is setting a breakpoint "When '0x7FFFFFFF' 
changes (4 bytes)" which is clearly incorrect.&lt;BR /&gt;&lt;BR /&gt;It seems to me (in
 my only slightly educated opinion) that there is confustion about 32 
and 64-bit applications and addressing schemes. That said, I have no 
idea if it is a Visual Studio issue, or an IVF issue, or if it is no 
issue at all and I just have something set incorrectly&lt;BR /&gt;&lt;BR /&gt;Here is a simple program that is able to reproduce this issue:&lt;BR /&gt;[fxfortran]program fortBreakTest  
  
   implicit none  
  
   ! Variables  
   double precision, dimension (1000000) :: array  
   integer :: i, j, k  
   ! Body of fortBreakTest  
  
   i = 0  
   j = 0  
   k = 0  
  
   do i = 1, 1000000  
       array(i) = i  
   enddo  
  
   i = 1  
  
   j = 2*i  
  
   do i = 1, 10  
       k = k + i  
   enddo  
  
   print*, "I, J, K = ", i, j, k  
  
   end program fortBreakTest [/fxfortran] In the debugger I have break points on the i=0 and i=1 lines. If I ask for the location of array(1000000) in the Immediate Window, I get&lt;BR /&gt;LOC(array(1000000))#0000000140216298&lt;BR /&gt;&lt;BR /&gt;Pasting
 LOC(array(1000000)) into the Memory Window's 'Address:' field brings up
 the memory location 0x40216298 and gives me a whole lot of ????????s in
 the display. Pasting the address (0x0000000140216298) into the Memory 
Window's 'Address:' field brings up 0x7FFFFFFF and displaysa lot of 
???????s. &lt;BR /&gt;&lt;BR /&gt;Entering array(1000000) in the 'Address:' field 
brings up 0x0000000140216298 and shows the contents of that array 
element correctly. However, if I take even a single step with the 
debugger the Memory Window switches from the correct memory location to 
0x7FFFFFFF and displays ????????s all the way around.&lt;BR /&gt;&lt;BR /&gt;Hopefully this will allow you to reproduce what I am encountering and suggest a fix/way around it. Thanks again for your help.&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;As a quick update, creating a very nearly identical program in C++ 
(compiled with Visual Studio's C++ compiler, not Intel's) and running 
the exact same tests worked just fine. The Memory Window in C++ 
debuggerhappily accepted addresses in 64-bit form, both if input 
directly, or as the address of the array variable.&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;This occurs(ed) with both IVF 12.0.4.196 and the latest we've tried, 12.1.3526.2010.Thanks for any help people can provide, this bug makes it near impossible for us to begug the 64-bit version of our application and we'd really like to have that ability. I can post screenshots of this behavior if it will help.</description>
      <pubDate>Fri, 25 May 2012 15:30:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814719#M80433</guid>
      <dc:creator>mford78</dc:creator>
      <dc:date>2012-05-25T15:30:11Z</dc:date>
    </item>
    <item>
      <title>Debugging x64 code in Visual Studio 2010 doesn't allow one to v</title>
      <link>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814720#M80434</link>
      <description>This may be one of those 'Fortran culture' versus 'C culture' issues.&lt;BR /&gt;&lt;BR /&gt;&lt;I&gt;&amp;gt; Pasting
 LOC(array(1000000)) into the Memory Window's 'Address:' field brings...&lt;BR /&gt;&lt;/I&gt;&lt;BR /&gt;If, in the Memory window, you type &lt;BR /&gt;&lt;BR /&gt; array(1000000)&lt;BR /&gt;&lt;BR /&gt;instead of either LOC( &lt;I&gt;the same&lt;/I&gt; &lt;I&gt;variable&lt;/I&gt; ) or the 64 bit hex address value given by the Immediate window, the correct value is shown. &lt;BR /&gt;&lt;BR /&gt;This may be a little irritating if you are used to typing in 0xnnnnnnnnnnnnnnnn when debugging a C program, and it can even be a significant problem when debugging mixed C and Fortran codes. However, for a pure Fortran program, just typing the subscripted variable works, which suggests that the GUI evaluates what you type in as an address expression without dereferencing that address.&lt;BR /&gt;</description>
      <pubDate>Sat, 26 May 2012 08:47:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814720#M80434</guid>
      <dc:creator>mecej4</dc:creator>
      <dc:date>2012-05-26T08:47:29Z</dc:date>
    </item>
    <item>
      <title>Debugging x64 code in Visual Studio 2010 doesn't allow one to v</title>
      <link>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814721#M80435</link>
      <description>Hello,&lt;BR /&gt;&lt;BR /&gt;sorry to hear that you did not get help instantly. Thanks to your good description I was able to reproduce the problem and can confirm this as bug in the Fortran Expression Evaluation (FEE) which comes with our integration.&lt;BR /&gt;A defect was filed (DPD200288770) and engineering is already working on it. I'll let you know as soon as it is fixed.&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;&lt;BR /&gt;Georg Zitzlsberger&lt;BR /&gt;</description>
      <pubDate>Thu, 31 May 2012 15:17:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814721#M80435</guid>
      <dc:creator>Georg_Z_Intel</dc:creator>
      <dc:date>2012-05-31T15:17:09Z</dc:date>
    </item>
    <item>
      <title>Debugging x64 code in Visual Studio 2010 doesn't allow one to v</title>
      <link>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814722#M80436</link>
      <description>Hello,&lt;BR /&gt;&lt;BR /&gt;I'm happy to announce that we'll have this problem fixed with Intel Composer XE 2011 Update 11. It will be available in a couple of weeks.&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;&lt;BR /&gt;Georg Zitzlsberger</description>
      <pubDate>Mon, 11 Jun 2012 16:50:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Debugging-x64-code-in-Visual-Studio-2010-doesn-t-allow-one-to/m-p/814722#M80436</guid>
      <dc:creator>Georg_Z_Intel</dc:creator>
      <dc:date>2012-06-11T16:50:20Z</dc:date>
    </item>
  </channel>
</rss>

