2017-09-06 2 views
0

J'ai deux programmes sous forme d'abstraction sont:débogage de code à deux couches en C++

//test_driver.C" 
#include"iostream" 
int main() 
{ 
std::cout << "Alarm" << '\n'; 
} 

} 



//test_platform.C  
#include <iostream> 
#include <cstdlib> 
int main() 
{ 
std:cout << "Starting test_driver..." << '\n' ; 
int result = system("./test_driver"); 
} 

la question est:

Comment définir des points d'arrêt test_driver.C dans GDB ou NetBeans?

N'apportez aucune modification au code test_driver.C ni test_platform.C.

+0

Ceci est presque exacte en double de https://stackoverflow.com/questions/46046194/how-to-gdb-from-main-of-app2-triggered-by-app1 –

+0

@Employed russe qui ne permet pas de changement dans les applications de code non test_driver.C ni test_platform.C, aussi test_driver n'est pas exécuté par system(), en fait par une procédure plus complexe dans test_platform – dt128

Répondre

0

Ne pensez pas qu'il existe un moyen indépendant de la plate-forme pour ce faire.

pouvez essayer:

  • raise(SIGTRAP) sur les systèmes POSIX
  • DebugBreak sur Windows
0

sur une machine Linux, gcc peut intercepter l'appel système fork/vfork. Il y a plusieurs options de débogage que vous devez définir.

set detach-on-fork MODE 
    MODE can be on(default) or off 

set follow-fork-mode MODE 
    MODE can be child or parent(default) 

lorsque detach-on-fork est réglé sur ON, un procédé (selon follow-fork-mode) est débogué, comme d'habitude, l'autre sera détaché et a permis de fonctionner de façon indépendante. Lorsque detach-on-fork est désactivé, les deux processus seront conservés sous le contrôle de GDB, un processus (en fonction de follow-fork-mode) est débogué comme d'habitude, tandis que l'autre est suspendu. Pour plus de détails, voir les sections intitulées «inférieurs et programmes» et «fourches» du manuel here de la gdb.

Je ne sais pas si d'autres plateformes sont également supportées.