xref: /llvm-project/lldb/test/API/tools/lldb-server/inferior-crash/main.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht #include <cstdlib>
2*99451b44SJordan Rupprecht #include <cstring>
3*99451b44SJordan Rupprecht #include <iostream>
4*99451b44SJordan Rupprecht 
5*99451b44SJordan Rupprecht namespace {
6*99451b44SJordan Rupprecht const char *const SEGFAULT_COMMAND = "segfault";
7*99451b44SJordan Rupprecht const char *const ABORT_COMMAND = "abort";
8*99451b44SJordan Rupprecht }
9*99451b44SJordan Rupprecht 
main(int argc,char ** argv)10*99451b44SJordan Rupprecht int main(int argc, char **argv) {
11*99451b44SJordan Rupprecht   if (argc < 2) {
12*99451b44SJordan Rupprecht     std::cout << "expected at least one command provided on the command line"
13*99451b44SJordan Rupprecht               << std::endl;
14*99451b44SJordan Rupprecht   }
15*99451b44SJordan Rupprecht 
16*99451b44SJordan Rupprecht   // Process command line args.
17*99451b44SJordan Rupprecht   for (int i = 1; i < argc; ++i) {
18*99451b44SJordan Rupprecht     const char *const command = argv[i];
19*99451b44SJordan Rupprecht     if (std::strstr(command, SEGFAULT_COMMAND)) {
20*99451b44SJordan Rupprecht       // Perform a null pointer access.
21*99451b44SJordan Rupprecht       int *const null_int_ptr = nullptr;
22*99451b44SJordan Rupprecht       *null_int_ptr = 0xDEAD;
23*99451b44SJordan Rupprecht     } else if (std::strstr(command, ABORT_COMMAND)) {
24*99451b44SJordan Rupprecht       std::abort();
25*99451b44SJordan Rupprecht     } else {
26*99451b44SJordan Rupprecht       std::cout << "Unsupported command: " << command << std::endl;
27*99451b44SJordan Rupprecht     }
28*99451b44SJordan Rupprecht   }
29*99451b44SJordan Rupprecht 
30*99451b44SJordan Rupprecht   return 0;
31*99451b44SJordan Rupprecht }
32