Pergunta

eu lançar meu programa em C #, que, em seguida, chama alguns C ++ não gerenciado.

Quando eu quebrar em uma linha no C ++ não gerenciado, o item de menu 'New Data Breakpoint' fica acinzentado.

Existe uma maneira de contornar isso?

Foi útil?

Solução

Para definir um ponto de interrupção de dados na porção nativa de um processo de modo misto, ver a resposta postado por jyoung .

Visual Studio desativa pontos de interrupção de dados ao executar qualquer coisa, mas o código puro, nativo. Consulte este post para uma explicação parcial por isso que a partir de um VS Program Manager.

Outras dicas

Então, para fazer isso eu tive que:

  • definir a dll não gerenciada como o projeto de inicialização
  • definir o programa gerido como o comando de inicialização
  • modo de depuração set como Native
  • "execução break" ou bater um ponto de interrupção de modo que você está no "depuração" estado

yech

A solução sugerida não funciona o tempo todo. Mesmo quando a depuração no modo nativo, com o programa quebrado em parte nativo de código, ao tentar definir um 'New Data Breakpoint' eu recebo um pop-up "O ponto de interrupção não pode ser definido. Breakpoints de dados não são suportados em Common Language Runtime "

A alternativa é adicionar pontos de interrupção de dados de código diretamente. Veja o artigo aqui .

Isso funciona bem no modo misto, ele só requer o modo de depuração nativo para ser ativo (como sugerido acima)

Um truque muito útil que funciona em qualquer lugar é chamar pontos de interrupção a partir do código em condições especiais:

If (Condition)
    System.Diagnostics.Debugger.Break()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top