J'ai une fonction massive (1500 lignes de code) que j'ai besoin de déboguer. Je vais essayer de le décomposer, mais les outils disponibles ne sont pas à la hauteur. Donc, ce dont j'ai besoin entre-temps, c'est de pouvoir désactiver la mise en cache de l'écriture du DC à l'écran pour pouvoir déboguer rapidement. Y a-t-il un drapeau que je peux définir pour accomplir cela?Quelle est la manière la plus simple de déboguer une fonction de peinture dans MFC?
Répondre
En tant qu'optimisation des performances, le GDI effectue un traitement par lots. Lorsque vous demandez à GDI d'effectuer une opération, il ne l'exécute pas toujours immédiatement. Au lieu de cela, il stocke dans un tampon et une fois que ce tampon est plein le lot est vidé et les opérations sont envoyées en mode noyau pour l'exécution. C'est ce que GDI fait par défaut et il n'y a généralement aucune raison de changer ce mode de fonctionnement.
Vous avez parfois besoin de contrôler la quantité de GDI en cours de traitement ou en cas de vidage, soit parce que vous affichez un CC hors écran et devez lire ces informations depuis la mémoire, soit à des fins de débogage.
Vous pouvez utiliser 2 appels API pour contrôler le traitement par lots. Pour lancer une vidange des opérations groupées, vous pouvez appeler le GdiFlush
. Une fois cette API retournée, vous avez la certitude que toutes les opérations GDI ont été exécutées. Si vous souhaitez contrôler la quantité de traitement par lots effectuée, vous pouvez utiliser GdiSetBatchLimit
. Pour désactiver le traitement par lots, appelez simplement GdiSetBatchLimit(1)
.
La façon dont je le fais:
- La meilleure façon est deux moniteurs havong.
- Le débogage à distance est également parfait, bien meilleur que le débogage sur la même machine. Vous pouvez le faire aussi avec une machine virtuelle.
Vous devez désactiver la double mise en mémoire tampon (utilisation de CMemDC).
- 1. Comment déboguer dans jQuery de la manière la plus simple?
- 2. Quelle est la manière la plus simple d'animer une ligne?
- 3. Quelle est la manière la plus simple d'inverser une ArrayList?
- 4. Quelle est la manière la plus simple (ou la bibliothèque la plus simple) de créer une fonction php() vraiment sécurisée?
- 5. Quelle est la manière la plus simple de faire une communication distribuée simple dans .NET?
- 6. Quelle est la manière la plus simple d'appeler une fonction toutes les 5 secondes dans jQuery?
- 7. Quelle est la manière la plus simple de déployer plusieurs applications Web dans une même solution?
- 8. Création d'une interface utilisateur graphique C++: Quelle est la manière la plus simple de le faire?
- 9. Quelle est la manière la plus simple de simuler une référence par passe dans Actionscript 3.0?
- 10. Quelle est la manière la plus simple de remplir les espaces dans une liste de nombres?
- 11. Quelle est la manière la plus simple de créer une classe héritée dans Qt 5?
- 12. Quelle est la manière la plus pythonique?
- 13. Quelle est la manière la plus simple/la plus élégante d'itérer sur des correspondances dans un script/une fonction vim?
- 14. Quelle est la manière la plus simple de persister une petite chaîne dans mon extension FireFox?
- 15. Quelle est la manière la plus simple et la plus correcte de calculer l'âge?
- 16. Quelle est la manière la plus simple de dessiner une texture avec OpenGL ES?
- 17. Quelle est la manière la plus simple de faire une liste de coordonnées?
- 18. Quelle est la manière la plus simple de tracer un arbre de décomposition dans Mathematica?
- 19. Quelle est la manière la plus simple de créer un client simple pour MySQL?
- 20. quelle est la manière la plus simple de travailler les tableaux dans objective-c?
- 21. Quelle est la manière la plus simple de définir la valeur d'un champ incorporé dans Mongoid?
- 22. Quelle est la manière la plus simple de changer l'image de l'onglet sélectionné dans ASP.NET MVC?
- 23. Quelle est la manière la plus simple de trouver l'unité de répétition de la matrice?
- 24. Quelle est la manière la plus simple de trier une EntityCollection EF4 <T>?
- 25. Quelle est la manière la plus simple de créer une carte d'identité STL?
- 26. VBScript: Quelle est la manière la plus simple de formater une chaîne?
- 27. Quelle est la manière la plus simple d'ajouter une propriété AlphaBlendValue à TImage de Delphi?
- 28. WP7: Quelle est la manière la plus simple de jouer un son de système dans XNA?
- 29. Quelle est la manière la plus simple de faire des tâches d'arrière-plan dans Windows.Forms?
- 30. Quelle est la manière la plus simple de demander à wxWidgets de toujours utiliser wxFileConfig?
En tant qu'optimisation des performances, le GDI effectue des opérations de rendu. Pour désactiver le traitement par lots pour un thread, vous pouvez appeler ['GdiSetBatchLimit (1)'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd144846.aspx). Vous pouvez également vidanger explicitement les opérations de rendu en appelant ['GdiFlush()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd144844.aspx). – IInspectable
@IInspectable Cela semble être la bonne réponse. Postez-le et je vais vous donner un crédit. – Adrian