ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้

ดีบักเกอร์ Studio ภาพไม่สามารถแสดงวัตถุที่อยู่ถาวร

อาการ

เมื่อคุณพิมพ์ชื่อวัตถุของวัตถุที่อยู่ที่เป็นที่อยู่ถาวรในหน้าต่างWatchในดีบัก Visual Studio คุณได้รับข้อความที่คล้ายกับต่อไปนี้:

รหัสobject_nameจะไม่เป็นที่รู้จัก

ตัวอย่างเช่น สามารถปฏิบัติปัญหานี้ โดยการคอมไพล์ และเรียกใช้รหัสดังต่อไปนี้บนระบบที่ใช้ 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;
}

สาเหตุ

ในเวอร์ชันก่อนหน้าของ Visual Studio ดีบักเกอร์สัมพัทธ์ที่อยู่ใช้แทนที่เป็นที่อยู่แบบเต็มสำหรับตัวแปรทั้งหมด ปัญหานี้เกิดจากตัวแปรที่อยู่ในที่อยู่ถาวรไม่ถูกพบในช่วงถ่ายทอดสดสำหรับกองซ้อนเฟรมปัจจุบัน

การแก้ปัญหา

การแก้ไขนี้ใช้เฉพาะกับ Visual Studio 2015 ปรับปรุง 3 ถ้าคุณต้องการดูที่อยู่ที่สมบูรณ์ คุณต้องใช้ Visual Studio 2015 ปรับปรุง 3 หรือรุ่นที่ใหม่กว่า

วิธีการแก้ไขไม่สามารถดาวน์โหลดได้จากศูนย์ดาวน์โหลดของไมโครซอฟท์:

ดาวน์โหลดแพคเกจโปรแกรมแก้ไข

Microsoft สแกนแฟ้มนี้เพื่อป้องกันไวรัส โดยใช้ซอฟต์แวร์ตรวจสอบไวรัสล่าสุด ณวันที่มีการโพสต์แฟ้มนั้น ๆ มี แฟ้มเก็บอยู่บนเซิร์ฟเวอร์ที่สนับสนุนความปลอดภัยที่ช่วยป้องกันการเปลี่ยนแปลงใด ๆ ที่ไม่ได้รับอนุญาต

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ขยายทักษะของคุณ
สำรวจการฝึกอบรม
รับฟีเจอร์ใหม่ก่อนใคร
เข้าร่วม Microsoft Insider

ข้อมูลนี้เป็นประโยชน์หรือไม่

ขอบคุณสำหรับคำติชมของคุณ

ขอขอบคุณสำหรับคำติชมของคุณ! เราคิดว่าอาจเป็นประโยชน์ที่จะให้คุณได้ติดต่อกับหนึ่งในตัวแทนฝ่ายสนับสนุน Office ของเรา

×