SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
26 e 27 de Agosto, 2014
Transamérica Expo Center, São Paulo/SP
C++ e Linux
Embarcado:
União perfeita
Vinicius Zein, Bruno Herrera – Fundação CERTI
Fundação CERTI - Direitos Reservados
Quem somos
• Vinicius Zein
• Coordenador da área de Sistemas
Embarcados, CCD, Fundação CERTI
• Bruno Herrera
• Gerente de Tecnologia do Centro de
Convergência Digital, Fundação CERTI
Fundação CERTI - Direitos Reservados
Quem somos
• Instituição de Pesquisa, Tecnologia e Inovação
• Criada em 1984 com a missão de desenvolver soluções
tecnológicas para produtos e processos
• Possui cerca de 500 colaboradores no grupo
• Privada, que reinveste o resultado em P&D
• Credenciada no MCTI e SUFRAMA, estando apta a
captar projetos de Lei de Informática, Lei do Bem e
Cooperação Internacional
• Mais de 500 empresas clientes no Brasil e exterior
• Crescimento de mais de 20% ao ano nos últimos 5 anos
• Reconhecimento e conquista de diversos prêmios,
como o Prêmio FINEP Nacional
Fundação CERTI - Direitos Reservados
Agenda
1. Linux Embarcado
2. C++
3. Ferramentas para
desenvolvimento e debugging
4. Frameworks de mock e testes
5. Test driven development
6. Conclusões
Fundação CERTI - Direitos Reservados
1 - Linux Embarcado
Fundação CERTI - Direitos Reservados
http://events.linuxfoundation.org/sites/events/files/slides/csimmonds-embedded-linux-timeline-2013.pdf
Fundação CERTI - Direitos Reservados
Sistemas embarcados hoje
• Centrais telefônicas
• Telefones IP e smartphones
• Televisores
• Set-top boxes
• Impressoras
• Sistemas de injeção eletrônica
• Cameras
• Android
Fundação CERTI - Direitos Reservados
Sistemas embarcados hoje
• Centrais telefônicas
• Telefones IP e smartph
• Televisores
• Set-top boxes
• Impressoras
• Sistemas de injeção eletrônica
• Cameras
• Android
Fundação CERTI - Direitos Reservados
Set-top box ISDB-Tb
Fundação CERTI - Direitos Reservados
2 – “cee plus plus"
Fundação CERTI - Direitos Reservados
C++
• Multi-paradigma
• Orientada a objetos
• Templates, inline functions
• Metaprogramação
• Performática e poderosa
• Ferramentas disponíveis
• Compatibilidade com C just in case
;)
Fundação CERTI - Direitos Reservados
C++
• STL, Boost, ACE
• Linguagem em constante evolução
– C++85 style "C with Classes”
– C++98
– C++03
– C++11
– C++14
– C++18?!?!?
Fundação CERTI - Direitos Reservados
C++?
• Don’t lower your level of abstraction
without good reason
• Low-level implies
– More code
– More bugs
– Higher maintenance costs
http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf
Fundação CERTI - Direitos Reservados
Linux Embarcado
+
C++
=
União Perfeita
Fundação CERTI - Direitos Reservados
2 - Ferramentas para
desenvolvimento e debugging
Fundação CERTI - Direitos Reservados
Build systems
• Buildroot
“Making Embedded Linux Easy
Buildroot is a simple, efficient and
easy-to-use tool to generate embedded
Linux systems through cross-
compilation.”
Fundação CERTI - Direitos Reservados
Build systems
• Yocto Project
“It's not an embedded Linux distribution
– it creates a custom one for you”
Fundação CERTI - Direitos Reservados
Build systems
• Autoconf
• Rake
• Boost.Build
• Qmake
• Scons
• CMake
Fundação CERTI - Direitos Reservados
IDEs
* Ferramenta para navegação e
edição de código
• Vim
• Emacs
• Sublime Text 2
• Eclipse CDT
• Netbeans
• SlickEdit
• QtCreator
• JetBrains AppCode
Fundação CERTI - Direitos Reservados
Debugging
Fundação CERTI - Direitos Reservados
Debugging
If debugging is the process of removing
bugs, then programming must be the
process of putting them in.
~Edsger Dijkstra
Fundação CERTI - Direitos Reservados
Debugging
• Logs
• Command Line Interface (CLI)
• gdb (post morten)
• gdb + gdbserver
• ddd
• Google BreakPad
** Para cada problema novo
encontrado, um (ou mais) testes
unitários. **
Fundação CERTI - Direitos Reservados
Debugging - GDB
• Após o crash
> gdb <program> -c <core_file>
• bt full -> backtrace
• print <variable>
• frame <frame_id>
• thread <thread_id>
Fundação CERTI - Direitos Reservados
Debugging - GDB
Fundação CERTI - Direitos Reservados
Debugging - GDB
Fundação CERTI - Direitos Reservados
Debugging - GDB
Fundação CERTI - Direitos Reservados
Debugging - Breakpad
Fonte: https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad
Fundação CERTI - Direitos Reservados
Debugging - Breakpad
Fonte: https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad
Fundação CERTI - Direitos Reservados
Integração contínua
Fundação CERTI - Direitos Reservados
Outras ferramentas
• Análise estática – coverity,
cppcheck
• Cobertura – cccc
• Valgrind, tcmalloc
Fundação CERTI - Direitos Reservados
Integração contínua
Fundação CERTI - Direitos Reservados
Cobertura de Codigo
Fundação CERTI - Direitos Reservados
Cobertura de Codigo
Fundação CERTI - Direitos Reservados
3 - Frameworks de mock e
testes para C++
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
• Boa documentação
• Multiplataforma
– Linux, Windows, Mac OS X
• Configuração rápida e fácil
• 1 execução -> múltiplas falhas
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
Testes unitários – gtest
Fundação CERTI - Direitos Reservados
gmock
• Mocking Framework do Google
para testes em C++
• Simulando comportamentos.
• Criação de emuladores
– Necessidade do target real
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
gmock
Fundação CERTI - Direitos Reservados
Google benchmark
• https://github.com/google/benchm
ark
• Suporte a benchmark de funções
Fundação CERTI - Direitos Reservados
Fundação CERTI - Direitos Reservados
RAII
• Resource Acquisition Is Initialization
Fundação CERTI - Direitos Reservados
4 - Test driven development
Fundação CERTI - Direitos Reservados
TDD - Test driven development
http://www.pathfindersolns.com/
Fundação CERTI - Direitos Reservados
5 – Conclusões
Fundação CERTI - Direitos Reservados
Conclusões
• Use ponteiro inteligentes
– std::shared_ptr, std::scoped_ptr,
std::unique_ptr
• RAII
• Mantenha padrões de Codificação
– http://www.chromium.org/developers/coding-style
– http://google-
styleguide.googlecode.com/svn/trunk/cppguide.xml
– http://clang.llvm.org/docs/ClangFormat.html
• Teste antes codifique depois (TDD)
• Prefira algoritmos (STL/Boost)
Fundação CERTI - Direitos Reservados
Perguntas?
Fundação CERTI - Direitos Reservados
Vinicius Zein
vtz@certi.org.br
Bruno Herrera
bmh@certi.org.br

Más contenido relacionado

Destacado

06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...
06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...
06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...Guillermo Padrés Elías
 
Apresentação abreu ambiental
Apresentação abreu ambientalApresentação abreu ambiental
Apresentação abreu ambientalClaudio Abreu
 
Cantos e encantos naturais de ibiá
Cantos e encantos  naturais de ibiá Cantos e encantos  naturais de ibiá
Cantos e encantos naturais de ibiá rosangelaresende
 
“Terrorismo” busca o consciente em farsa | Teatrojornal
“Terrorismo” busca o consciente em farsa | Teatrojornal“Terrorismo” busca o consciente em farsa | Teatrojornal
“Terrorismo” busca o consciente em farsa | TeatrojornalTatiane Daud
 
Jämlikhetseffekten metodbok
Jämlikhetseffekten metodbokJämlikhetseffekten metodbok
Jämlikhetseffekten metodbokMake Equal
 
Discapacidad visual 1104
Discapacidad visual 1104Discapacidad visual 1104
Discapacidad visual 1104Laura Mogollón
 
Curso de managed pressure drilling (MPD) - Nível avançado
Curso de managed pressure drilling (MPD) - Nível avançadoCurso de managed pressure drilling (MPD) - Nível avançado
Curso de managed pressure drilling (MPD) - Nível avançadoSQC_Group
 

Destacado (15)

Documento
DocumentoDocumento
Documento
 
Resume-T.G.S.
Resume-T.G.S.Resume-T.G.S.
Resume-T.G.S.
 
06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...
06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...
06-04-2014 El Gobernador Guillermo Padrés encabezó los festejos por el 157 an...
 
Apresentação abreu ambiental
Apresentação abreu ambientalApresentação abreu ambiental
Apresentação abreu ambiental
 
Miss gaina(1)
Miss gaina(1)Miss gaina(1)
Miss gaina(1)
 
Cantos e encantos naturais de ibiá
Cantos e encantos  naturais de ibiá Cantos e encantos  naturais de ibiá
Cantos e encantos naturais de ibiá
 
ANTES DE MORIR
ANTES DE MORIRANTES DE MORIR
ANTES DE MORIR
 
“Terrorismo” busca o consciente em farsa | Teatrojornal
“Terrorismo” busca o consciente em farsa | Teatrojornal“Terrorismo” busca o consciente em farsa | Teatrojornal
“Terrorismo” busca o consciente em farsa | Teatrojornal
 
Cv 2016
Cv 2016Cv 2016
Cv 2016
 
Trabajo de aplicaciones
Trabajo de aplicacionesTrabajo de aplicaciones
Trabajo de aplicaciones
 
Jämlikhetseffekten metodbok
Jämlikhetseffekten metodbokJämlikhetseffekten metodbok
Jämlikhetseffekten metodbok
 
Discapacidad visual 1104
Discapacidad visual 1104Discapacidad visual 1104
Discapacidad visual 1104
 
Curso de managed pressure drilling (MPD) - Nível avançado
Curso de managed pressure drilling (MPD) - Nível avançadoCurso de managed pressure drilling (MPD) - Nível avançado
Curso de managed pressure drilling (MPD) - Nível avançado
 
Desenho de forma
Desenho de formaDesenho de forma
Desenho de forma
 
Mapas conceituais para o slide share
Mapas conceituais  para o slide shareMapas conceituais  para o slide share
Mapas conceituais para o slide share
 

Similar a c++-esc-brazil-presentation_v1.0

Negócios e Open Source
Negócios e Open SourceNegócios e Open Source
Negócios e Open SourceOpenBossa
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryRodrigo Russo
 
Ambientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC'sAmbientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC'sJoão Pedro Daltro
 
KDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TI
KDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TIKDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TI
KDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TImarioaxavier7
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
Certificacoes Desenvolvedores
Certificacoes DesenvolvedoresCertificacoes Desenvolvedores
Certificacoes DesenvolvedoresJose Berardo
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android EmbarcadoOdair Sousa
 
Palestra certificações Linux
Palestra certificações LinuxPalestra certificações Linux
Palestra certificações LinuxKleber de Paiva
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Fabio Vieira Mello
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestVictor Hugo Bilouro
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammerOromar Dantas
 
Dokuwiki e a superimportancia da documentacao na TI
Dokuwiki e a superimportancia da documentacao na TIDokuwiki e a superimportancia da documentacao na TI
Dokuwiki e a superimportancia da documentacao na TImarioaxavier7
 
Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...
Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...
Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...marioaxavier7
 
Palestra Murilo Santana - Ownando sistemas por uma porta USB
Palestra Murilo Santana - Ownando sistemas por uma porta USBPalestra Murilo Santana - Ownando sistemas por uma porta USB
Palestra Murilo Santana - Ownando sistemas por uma porta USBBHack Conference
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 

Similar a c++-esc-brazil-presentation_v1.0 (20)

Negócios e Open Source
Negócios e Open SourceNegócios e Open Source
Negócios e Open Source
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
 
Ambientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC'sAmbientes de Desenvolvimento, Groupware, MOOC's
Ambientes de Desenvolvimento, Groupware, MOOC's
 
KDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TI
KDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TIKDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TI
KDE Neon & KDE Plasma: venha para o KDE e ganhe experiencia profissional em TI
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Certificacoes Desenvolvedores
Certificacoes DesenvolvedoresCertificacoes Desenvolvedores
Certificacoes Desenvolvedores
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Palestra certificações Linux
Palestra certificações LinuxPalestra certificações Linux
Palestra certificações Linux
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression Test
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammer
 
Dokuwiki e a superimportancia da documentacao na TI
Dokuwiki e a superimportancia da documentacao na TIDokuwiki e a superimportancia da documentacao na TI
Dokuwiki e a superimportancia da documentacao na TI
 
eLua - Lua for Microcontrollers
eLua - Lua for MicrocontrollerseLua - Lua for Microcontrollers
eLua - Lua for Microcontrollers
 
Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...
Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...
Software Livre no Banco do Brasil: como o BB economizou R$ 50 milhões de reai...
 
Palestra Murilo Santana - Ownando sistemas por uma porta USB
Palestra Murilo Santana - Ownando sistemas por uma porta USBPalestra Murilo Santana - Ownando sistemas por uma porta USB
Palestra Murilo Santana - Ownando sistemas por uma porta USB
 
ESX Tech Lives - DevOps
ESX Tech Lives - DevOpsESX Tech Lives - DevOps
ESX Tech Lives - DevOps
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 

c++-esc-brazil-presentation_v1.0

  • 1. 26 e 27 de Agosto, 2014 Transamérica Expo Center, São Paulo/SP C++ e Linux Embarcado: União perfeita Vinicius Zein, Bruno Herrera – Fundação CERTI
  • 2. Fundação CERTI - Direitos Reservados Quem somos • Vinicius Zein • Coordenador da área de Sistemas Embarcados, CCD, Fundação CERTI • Bruno Herrera • Gerente de Tecnologia do Centro de Convergência Digital, Fundação CERTI
  • 3. Fundação CERTI - Direitos Reservados Quem somos • Instituição de Pesquisa, Tecnologia e Inovação • Criada em 1984 com a missão de desenvolver soluções tecnológicas para produtos e processos • Possui cerca de 500 colaboradores no grupo • Privada, que reinveste o resultado em P&D • Credenciada no MCTI e SUFRAMA, estando apta a captar projetos de Lei de Informática, Lei do Bem e Cooperação Internacional • Mais de 500 empresas clientes no Brasil e exterior • Crescimento de mais de 20% ao ano nos últimos 5 anos • Reconhecimento e conquista de diversos prêmios, como o Prêmio FINEP Nacional
  • 4. Fundação CERTI - Direitos Reservados Agenda 1. Linux Embarcado 2. C++ 3. Ferramentas para desenvolvimento e debugging 4. Frameworks de mock e testes 5. Test driven development 6. Conclusões
  • 5. Fundação CERTI - Direitos Reservados 1 - Linux Embarcado
  • 6. Fundação CERTI - Direitos Reservados http://events.linuxfoundation.org/sites/events/files/slides/csimmonds-embedded-linux-timeline-2013.pdf
  • 7. Fundação CERTI - Direitos Reservados Sistemas embarcados hoje • Centrais telefônicas • Telefones IP e smartphones • Televisores • Set-top boxes • Impressoras • Sistemas de injeção eletrônica • Cameras • Android
  • 8. Fundação CERTI - Direitos Reservados Sistemas embarcados hoje • Centrais telefônicas • Telefones IP e smartph • Televisores • Set-top boxes • Impressoras • Sistemas de injeção eletrônica • Cameras • Android
  • 9. Fundação CERTI - Direitos Reservados Set-top box ISDB-Tb
  • 10. Fundação CERTI - Direitos Reservados 2 – “cee plus plus"
  • 11. Fundação CERTI - Direitos Reservados C++ • Multi-paradigma • Orientada a objetos • Templates, inline functions • Metaprogramação • Performática e poderosa • Ferramentas disponíveis • Compatibilidade com C just in case ;)
  • 12. Fundação CERTI - Direitos Reservados C++ • STL, Boost, ACE • Linguagem em constante evolução – C++85 style "C with Classes” – C++98 – C++03 – C++11 – C++14 – C++18?!?!?
  • 13. Fundação CERTI - Direitos Reservados C++? • Don’t lower your level of abstraction without good reason • Low-level implies – More code – More bugs – Higher maintenance costs http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf
  • 14. Fundação CERTI - Direitos Reservados Linux Embarcado + C++ = União Perfeita
  • 15. Fundação CERTI - Direitos Reservados 2 - Ferramentas para desenvolvimento e debugging
  • 16. Fundação CERTI - Direitos Reservados Build systems • Buildroot “Making Embedded Linux Easy Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross- compilation.”
  • 17. Fundação CERTI - Direitos Reservados Build systems • Yocto Project “It's not an embedded Linux distribution – it creates a custom one for you”
  • 18. Fundação CERTI - Direitos Reservados Build systems • Autoconf • Rake • Boost.Build • Qmake • Scons • CMake
  • 19. Fundação CERTI - Direitos Reservados IDEs * Ferramenta para navegação e edição de código • Vim • Emacs • Sublime Text 2 • Eclipse CDT • Netbeans • SlickEdit • QtCreator • JetBrains AppCode
  • 20. Fundação CERTI - Direitos Reservados Debugging
  • 21. Fundação CERTI - Direitos Reservados Debugging If debugging is the process of removing bugs, then programming must be the process of putting them in. ~Edsger Dijkstra
  • 22. Fundação CERTI - Direitos Reservados Debugging • Logs • Command Line Interface (CLI) • gdb (post morten) • gdb + gdbserver • ddd • Google BreakPad ** Para cada problema novo encontrado, um (ou mais) testes unitários. **
  • 23. Fundação CERTI - Direitos Reservados Debugging - GDB • Após o crash > gdb <program> -c <core_file> • bt full -> backtrace • print <variable> • frame <frame_id> • thread <thread_id>
  • 24. Fundação CERTI - Direitos Reservados Debugging - GDB
  • 25. Fundação CERTI - Direitos Reservados Debugging - GDB
  • 26. Fundação CERTI - Direitos Reservados Debugging - GDB
  • 27. Fundação CERTI - Direitos Reservados Debugging - Breakpad Fonte: https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad
  • 28. Fundação CERTI - Direitos Reservados Debugging - Breakpad Fonte: https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad
  • 29. Fundação CERTI - Direitos Reservados Integração contínua
  • 30. Fundação CERTI - Direitos Reservados Outras ferramentas • Análise estática – coverity, cppcheck • Cobertura – cccc • Valgrind, tcmalloc
  • 31. Fundação CERTI - Direitos Reservados Integração contínua
  • 32. Fundação CERTI - Direitos Reservados Cobertura de Codigo
  • 33. Fundação CERTI - Direitos Reservados Cobertura de Codigo
  • 34. Fundação CERTI - Direitos Reservados 3 - Frameworks de mock e testes para C++
  • 35. Fundação CERTI - Direitos Reservados Testes unitários – gtest • Boa documentação • Multiplataforma – Linux, Windows, Mac OS X • Configuração rápida e fácil • 1 execução -> múltiplas falhas
  • 36. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  • 37. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  • 38. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  • 39. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  • 40. Fundação CERTI - Direitos Reservados Testes unitários – gtest
  • 41. Fundação CERTI - Direitos Reservados gmock • Mocking Framework do Google para testes em C++ • Simulando comportamentos. • Criação de emuladores – Necessidade do target real
  • 42. Fundação CERTI - Direitos Reservados gmock
  • 43. Fundação CERTI - Direitos Reservados gmock
  • 44. Fundação CERTI - Direitos Reservados gmock
  • 45. Fundação CERTI - Direitos Reservados gmock
  • 46. Fundação CERTI - Direitos Reservados gmock
  • 47. Fundação CERTI - Direitos Reservados gmock
  • 48. Fundação CERTI - Direitos Reservados Google benchmark • https://github.com/google/benchm ark • Suporte a benchmark de funções
  • 49. Fundação CERTI - Direitos Reservados
  • 50. Fundação CERTI - Direitos Reservados RAII • Resource Acquisition Is Initialization
  • 51. Fundação CERTI - Direitos Reservados 4 - Test driven development
  • 52. Fundação CERTI - Direitos Reservados TDD - Test driven development http://www.pathfindersolns.com/
  • 53. Fundação CERTI - Direitos Reservados 5 – Conclusões
  • 54. Fundação CERTI - Direitos Reservados Conclusões • Use ponteiro inteligentes – std::shared_ptr, std::scoped_ptr, std::unique_ptr • RAII • Mantenha padrões de Codificação – http://www.chromium.org/developers/coding-style – http://google- styleguide.googlecode.com/svn/trunk/cppguide.xml – http://clang.llvm.org/docs/ClangFormat.html • Teste antes codifique depois (TDD) • Prefira algoritmos (STL/Boost)
  • 55. Fundação CERTI - Direitos Reservados Perguntas?
  • 56. Fundação CERTI - Direitos Reservados Vinicius Zein vtz@certi.org.br Bruno Herrera bmh@certi.org.br