Applies ToVisual Studio 2015 Update 3

Symptômes

Lorsque vous tapez le nom de l’objet d’un objet qui se trouve à une adresse fixe dans la fenêtre Espion du débogueur de Visual Studio, vous recevez un message semblable au suivant :

identificateur object_name n’est pas défini

Par exemple, ce problème peut être reproduit en compilant et exécutant le code suivant dans un système basé sur le x86 :

Relocate.asm
      .586
      .MODEL FLAT
      PUBLIC _fixed_struct
      _fixed_struct = 04000000h
      END

Main.cpp
#include <Windows.h>

#define SHM_ADDRESS 0x04000000
#define SHM_SIZE_BYTES 1024
#define SHM_NAME L"TEST_NAME"

extern "C"
{
   extern struct fixed_struct_type {
      int a;
      int b;
      int c;
   } fixed_struct;
}

void AttachShm()
{
   HANDLE mapfile = CreateFileMapping(
      INVALID_HANDLE_VALUE,  // current file handle (use System page file)
      NULL,                  // default security (not inheritable)
      PAGE_READWRITE,        // read/write permission
      0,                     // size of File (high-order doubleword)
      SHM_SIZE_BYTES,        // size of File (low-order doubleword)
      SHM_NAME);             // name of mapping object

   MapViewOfFileEx(
      mapfile,               // handle to mapping object
      FILE_MAP_ALL_ACCESS,   // read/write permission
      0,                     // address offset (high-order doubleword)
      0,                     // address offset (low-order doubleword)
      SHM_SIZE_BYTES,        // size of common block
      (LPVOID)SHM_ADDRESS);  // suggested starting address
}

int main(int argc, char* argv[])
{
   AttachShm();

   fixed_struct.a = 30;
   
   // Put a breakpoint on the next line, view fixed_struct.a in watch window
   return 0;
}

Cause

Dans les versions antérieures de Visual Studio, le débogueur utilisé par des adresses relatives au lieu d’adresses absolues pour toutes les variables. Ce qui provoquait des variables qui sont situés à des adresses fixes se trouve ne pas dans les plages direct pour le frame de pile actuel.

Résolution

Ce correctif s’applique uniquement aux 3 mise à jour de Visual Studio 2015. Si vous souhaitez afficher les adresses absolues, vous devez utiliser Visual Studio 2015 mise à jour 3 ou une version ultérieure.

Le correctif est disponible pour téléchargement à partir du Microsoft Download Center :

Télécharger le package correctif maintenant.

Microsoft a analysé ce fichier contre les virus à l'aide des logiciels de détection de virus les plus récents disponibles à la date à laquelle le fichier a été validé. Le fichier est stocké sur des serveurs sécurisés, empêchant toute modification non autorisée sur celui-ci.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.