!bpmd doesn't work on explicit interface methods

Abierto
#5,777 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
cpp, csharp
Área
devtools

Línea de trabajo

Comienza con el manejo del comando !bpmd en las herramientas de diagnóstico y reproduce el comando informado contra el ejemplo de método de interfaz explícita dirigido a console.dll. Rastrea cómo se resuelve X.Y.Z.SampleClass.IControl.Paint y, a continuación, verifica que se alcanza un breakpoint cuando se ejecuta control.Paint() y que el método ISurface correspondiente sigue siendo distinguible.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

For example, if I have the following code taken from the docs:

namespace X.Y.Z;

public interface IControl
{
    void Paint();
}
public interface ISurface
{
    void Paint();
}
public class SampleClass : IControl, ISurface
{
    void IControl.Paint()
    {
        System.Console.WriteLine("IControl.Paint");
    }
    void ISurface.Paint()
    {
        System.Console.WriteLine("ISurface.Paint");
    }
}

internal static class Program
{
    private static void Main()
    {
        SampleClass sample = new SampleClass();
        IControl control = sample;
        ISurface surface = sample;

        // The following lines all call the same method.
        //sample.Paint(); // Compiler error.
        control.Paint();  // Calls IControl.Paint on SampleClass.
        surface.Paint();  // Calls ISurface.Paint on SampleClass.
    }
}

and try to set a breakpoint via !bpmd console.dll X.Y.Z.SampleClass.IControl.Paint, we do not break on it.
Runtime: latest main
TFM: net11.0

Found while working on https://github.com/dotnet/runtime/pull/125539

Lenguaje dominante
C++
Estrellas
1.3k
Forks
407
Merge medio
21 h 5 min
PR fusionados (30 d)
78

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

  • Sin Dockerfile ni archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dotnet/diagnostics

Todos los issues de dotnet/diagnostics

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.