Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Pazīmes

Ievadot objektu, kas atrodas fiksētu adresi Visual Studio atkļūdotāja skatīties logā objekta nosaukums, tiek parādīts ziņojums, kas līdzīgs šim:

nav definēts object_name identifikators

Piemēram, šī problēma var atveidot apkopot un palaižot šo kodu sistēmā 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;
}

Iemesls

Vecākās programmas Visual Studio atkļūdotāja relatīvā adreses vietā izmantot absolūtā adreses visiem mainīgajiem. Tas izraisīja mainīgos, kas atrodas fiksēts adreses nevar atrast tiešraides diapazons pašreizējo steka kadrs.

Risinājums

Šis labojums attiecas tikai uz Visual Studio 2015 atjauninājums 3. Ja vēlaties apskatīt absolūtā adreses, jāizmanto Visual Studio 2015 atjauninājums 3. vai jaunāku versiju.

Labojums ir pieejams lejupielādei no Microsoft Download Center:

Lejupielādējiet labojumu pakotni tūlīt.

Microsoft ir skenējusi šo failu, lai noteiktu, vai tajā nav vīrusu, izmantojot visjaunāko vīrusu noteikšanas programmatūru, kas bija pieejama faila izlikšanas datumā. Fails ir saglabāts serveros ar paaugstinātu drošību, tādējādi novēršot neautorizētu izmaiņu veikšanu tajā.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×